我无法从私有setter的基类中获取属性的GetSetMethod
,当属性不是基类时,它可以工作。
static void Main()
{
Console.WriteLine(typeof(Foo).GetProperty("Prop1").GetSetMethod(true));// this is null
Console.WriteLine(typeof(Foo).GetProperty("Prop2").GetSetMethod(true));// this has value
}
public class FooBase
{
public string Prop1 { get; private set; }
}
public class Foo : FooBase
{
public string Prop2 { get; private set; }
}
是否可以从基类
获取它或设置属性的值答案 0 :(得分:5)
当您将setter标记为private
时,setter方法的元数据确实在其派生类型中缺失。您必须在DeclaringType
(private
的类型}中找到它。
你可以试试这个:
var prop = typeof(Foo).GetProperty("Prop1");
var setter = prop.GetSetMethod(true);
if (setter == null)
setter = prop.DeclaringType.GetProperty(prop.Name).GetSetMethod(true);