为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以通过反思来设置私有财产?

是否可以通过反思来设置私有财产?

小唯快跑啊 2019-12-20 09:52:49
我可以通过反思设置私有财产吗?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); }    }}我已经尝试了以下方法,但它不起作用,其中t表示一种Entity:var t = typeof(Entity);var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);我想我可以做到,但我无法解决。
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

t.GetProperty("CreatedOn")

    .SetValue(obj, new DateTime(2009, 10, 14), null);

编辑:由于财产本身是公共的,您显然不需要使用BindingFlags.NonPublic它来查找它。SetValue尽管设置者的可访问性较差,但仍然进行呼叫仍会达到您的期望。


查看完整回答
反对 回复 2019-12-20
  • 3 回答
  • 0 关注
  • 383 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信