【发布时间】:2015-07-17 16:55:28
【问题描述】:
我已经看到了关于如何通过反射调用属性的私有设置器的各种线程。但是,没有设置器的自动属性呢?
public class Test
{
public string Property { get; } = "";
}
是否可以使用反射设置这个只读属性的值?
-
PropertyInfo.SetMethod返回 null -
PropertyInfo.SetValue失败
有什么想法吗?
【问题讨论】:
我已经看到了关于如何通过反射调用属性的私有设置器的各种线程。但是,没有设置器的自动属性呢?
public class Test
{
public string Property { get; } = "";
}
是否可以使用反射设置这个只读属性的值?
PropertyInfo.SetMethod 返回 nullPropertyInfo.SetValue 失败有什么想法吗?
【问题讨论】:
是否可以使用反射设置这个只读属性的值?
没有。这些属性由只读字段支持。 没有二传手;在构造函数中执行的任何赋值都直接写入字段。
如果你的设计让你想通过反射写入只读属性,你应该重新审视你的设计:)
【讨论】:
private readonly string _<>kProperty = ""; public string Property { get { return _<>kProperty; }} 的语法糖。不确定当 setter 不存在时如何调用它。