我有一个可以分配不同类的对象,所有这些类都有一个Position字段,无论对象的类型如何,我都需要访问该字段。 Visual Studio不允许我编译var pos = myObject.Position,因为object没有Position字段。而且我无法转换为MyClass,因为可以为该变量分配其他几个类。

如何在不强制转换为一种类型的情况下访问Position字段?

最佳答案

最好的选择是使所有类都实现一个公共接口,然后使用该接口访问属性。

但是,如果这些类超出了您的控制范围,则还有其他选择。您可以使用反射来访问字段/属性(通过Type.GetFieldFieldInfo.GetValue等),尽管这在运行时很慢。

如果您使用的是C#4或更高版本,则可以使用dynamic

dynamic theObject = yourObject;
Point position = theObject.Position;


这将使用动态(运行时)绑定来找到类型的Position属性或字段。

关于c# - 当它可以是多种类型时,如何在不将其转换为一种类型的情况下访问“对象”的特定字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13425156/

10-11 22:53
查看更多