1. ホーム
  2. .net

[解決済み] リフレクションで私有財産を設定することは可能ですか?

2022-06-22 15:16:32

質問

リフレクションで私有財産を設定できますか?

public abstract class Entity
{
    private int _id;
    private DateTime? _createdOn;
    public virtual T Id
    {
        get { return _id; }
        private set { ChangePropertyAndNotify(ref _id, value, x => Id); }
    }
    public virtual DateTime? CreatedOn
    {
        get { return _createdOn; }
        private set { ChangePropertyAndNotify(ref _createdOn, value, x => CreatedOn); }
    }
}

を試してみましたが、うまくいきません、どこで tEntity :

var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);

できるんだろうけど、うまくいかない。

どのように解決するのですか?

t.GetProperty("CreatedOn")
    .SetValue(obj, new DateTime(2009, 10, 14), null);

EDIT: プロパティ自体がパブリックであるため、どうやら BindingFlags.NonPublic を探す。 SetValue セッターのアクセシビリティが低いにもかかわらず、期待通りの動作をします。