使用反射获取类型

Mar*_* Ch 9 c# reflection types

我正在尝试使用反射获取我的类的属性类型,但它返回我唯一的RuntimePropertyInfo - 作为类型的名称.

我有对象MyObject actualData - 它包含属性 - "name"作为字符串,"Item"作为我的类型DatumType

当我调试时,我可以看到,actualData有2个属性,第一个是字符串类型,第二个是DatumType,但是当我使用它时:

string typeName = actualData.getType().getProperty("Item").getType().Name - 它返回RuntimePropertyInfo,而不是DatumType

你能看出我做错了什么吗?我正在使用C# - .Net 4.0.非常感谢!

C.E*_*uis 14

你得到的PropertyInfo对象类型getProperty()返回.尝试

string typeName = actualData.getType().getProperty("Item").PropertyType.Name;
Run Code Online (Sandbox Code Playgroud)

如果您想要通过PropertyInfo对象当前分配给对象的值的类型,您可以调用:

string typeName = actualData.getType().getProperty("Item").GetValue(actualData, null).GetType().Name;
Run Code Online (Sandbox Code Playgroud)

但在这种情况下你也可以简单地打电话:

string typeName = actualData.Item.GetType().Name;
Run Code Online (Sandbox Code Playgroud)