首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NET反射设置私有属性

.NET反射设置私有属性
EN

Stack Overflow用户
提问于 2009-11-22 18:51:05
回答 5查看 21.6K关注 0票数 21

如果您有如下定义的属性:

代码语言:javascript
复制
private DateTime modifiedOn;
public DateTime ModifiedOn
{
    get { return modifiedOn; }
}

如何使用反射将其设置为某个值?

我都试过了:

代码语言:javascript
复制
dto.GetType().GetProperty("ModifiedOn").SetValue(dto, modifiedOn, null);

代码语言:javascript
复制
dto.GetType().GetProperty("modifiedOn").SetValue(dto, modifiedOn, null);

但没有任何成功。抱歉,如果这是一个愚蠢的问题,但这是我第一次在C#.NET中使用反射。

EN

回答 5

Stack Overflow用户

发布于 2009-11-22 18:53:25

如果你的属性没有setter,你就不能在它上面调用SetValue。

票数 3
EN

Stack Overflow用户

发布于 2009-11-22 18:57:07

您可以尝试设置支持字段,而不是属性;您应该使用GetField()而不是GetProperty()

票数 3
EN

Stack Overflow用户

发布于 2016-11-24 21:42:53

您需要设置该字段,因为没有用于设置该属性的set属性。另外,对于非公共对象,还需要BindingFlags.NonPublic。

代码语言:javascript
复制
dto.GetType().
    GetField("modifiedOn", 
    BindingFlags.NonPublic|BindingFlags.SetField|BindingFlags.Instance).
    SetValue(dto, valueToSet);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1778405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档