如果您有如下定义的属性:
private DateTime modifiedOn;
public DateTime ModifiedOn
{
get { return modifiedOn; }
}
如何使用反射将其设置为某个值?
我都试过了:
dto.GetType().GetProperty("ModifiedOn").SetValue(dto, modifiedOn, null);
和
dto.GetType().GetProperty("modifiedOn").SetValue(dto, modifiedOn, null);
但没有任何成功。抱歉,如果这是一个愚蠢的问题,但这是我第一次在C#.NET中使用反射。
发布于 2009-11-22 18:53:25
如果你的属性没有setter,你就不能在它上面调用SetValue。
发布于 2009-11-22 18:57:07
您可以尝试设置支持字段,而不是属性;您应该使用GetField()
而不是GetProperty()
。
发布于 2016-11-24 21:42:53
您需要设置该字段,因为没有用于设置该属性的set属性。另外,对于非公共对象,还需要BindingFlags.NonPublic。
dto.GetType().
GetField("modifiedOn",
BindingFlags.NonPublic|BindingFlags.SetField|BindingFlags.Instance).
SetValue(dto, valueToSet);
https://stackoverflow.com/questions/1778405
复制相似问题