.NET反射 - 从实例属性获取声明类类型

3

能否从属性实例获取类的类型?

我尝试了以下方法:

var model = new MyModel("SomeValueForMyProperty")

Type declaringType = model.MyProperty.GetType().DeclaringType

但是结果通常对于声明类型和反射类型都无效。

1
你的意思是从属性所声明的类型中,获取该属性的类型吗?例如:从 typeof(string) 获取 typeof(Derp),因为 Derp 类中有一个名为 Herp 的字符串属性。 - user1228
既然你这么说 :) 我可以看出在这种情况下使用GetType()并没有真正意义。我认为我需要获取PropertyInfo,但不确定是否可以从属性实例本身获取。 - ricardo
1个回答

1

一个 Type 到声明该类型属性的类之间没有直接链接。

您需要使用 PropertyInfo

PropertyInfo propInfo = model.GetType().GetProperty("MyProperty");

// get the property value:
object value = propInfo.GetValue(model, null);
// get the property's declaring type:
Type declaringType = propInfo.DeclaringType;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接