C# 设置自动属性';通过反射的s值
我已经看过关于如何通过反射调用属性的私有setter的各种线程。但是,没有setter的自动属性呢C# 设置自动属性';通过反射的s值,c#,c#-6.0,C#,C# 6.0,我已经看过关于如何通过反射调用属性的私有setter的各种线程。但是,没有setter的自动属性呢 public class Test { public string Property { get; } = ""; } 是否可以使用反射设置此只读属性的值 PropertyInfo.SetMethod返回null PropertyInfo.SetValue失败 有什么想法吗 是否可以使用反射设置此只读属性的值 否。这些属性由只读字段支持。没有二传手;在构造函数中执行的任何赋值都直接写
public class Test
{
public string Property { get; } = "";
}
是否可以使用反射设置此只读属性的值
返回nullPropertyInfo.SetMethod
失败PropertyInfo.SetValue
如果你的设计让你想通过反射写入只读属性,你应该重新审视你的设计:)@D.R.:你把苹果比作宇航员;pIt只是
private readonly string_kProperty=“”)的语法糖;公共字符串属性{get{return{kProperty;}}
。不确定当setter不存在时您希望如何调用它。@d.R.嗯,它不存在。支持字段是编译器实现的详细信息。@D.R.:反射有很多用途,它们不会违反良好的设计,例如只调用可访问的成员。您可以尝试找出哪个私有字段与哪个属性相关联,但我确实会尽量避免这样做。@JonSkeet:这当然是正确的,但也有一些例子表明,通过反射绕过预期的公共API并不是一种糟糕的设计。这并不会使你的观点无效,你的观点可能在大多数情况下是可疑的。