use*_*322 2 c# casting object type-conversion
我有一个可以分配不同类的对象,所有这些类都有一个Position我需要访问的字段,而不管对象的类型如何.Visual Studio不会让我编译,var pos = myObject.Position因为object没有Position字段.我无法转换MyClass,因为可以有几个其他类分配给该变量.
如何在Position不转换为一种类型的情况下访问该字段?
最好的选择是让所有类实现一个公共接口,然后使用该接口访问属性.
但是,如果这些是您无法控制的类,则还有其他选项.您可以使用Reflection来访问字段/属性(通过Type.GetField和FieldInfo.GetValue等),尽管这在运行时很慢.
如果您使用的是C#4或更高版本,则可以使用dynamic:
dynamic theObject = yourObject;
Point position = theObject.Position;
Run Code Online (Sandbox Code Playgroud)
这将使用动态(运行时)绑定来查找类型的Position属性或字段.