我需要获取特定对象属性的值,但不知道该对象的类型

Mar*_*usz 3 c# reflection

我有一个 C# 对象,但我不知道该对象的类型。(即对象o)我所知道的是这个对象有一个名为“ID”的int类型的成员。

我想了解该房产的价值,但我的反思能力不够......

我可以获得该对象的类型和成员:

Type type = obj.GetType();
System.Reflection.MemberInfo[] member = type.GetMember("ID");
Run Code Online (Sandbox Code Playgroud)

...但不知道下一步该做什么:-)

提前感谢 Mariusz 的帮助

Jon*_*eet 5

您可以使用:

Type type = obj.GetType();
PropertyInfo property = type.GetProperty("ID");
int id = (int) property.GetValue(obj, null);
Run Code Online (Sandbox Code Playgroud)
  • 使用PropertyInfo因为你知道它是一个属性,这让事情变得更容易
  • 调用GetValue以获取值,obj作为属性的目标和null索引器参数传入(因为它是属性,而不是索引)
  • 将结果投射到int您已经知道的位置int

如果您使用 C# 4 和 .NET 4, Jared 的使用建议dynamic也很好,尽管为了避免所有括号,我可能会将其写为:

dynamic d = obj;
int id = d.ID;
Run Code Online (Sandbox Code Playgroud)

(除非您出于某种原因需要在单个表达式中使用它)。