gpt4 book ai didi

c# - 当 'object' 的某个字段可以有多种类型时,如何访问它而不将其转换为一种类型?

转载 作者:行者123 更新时间:2023-12-03 03:02:00 27 4
gpt4 key购买 nike

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

如何访问 Position 字段而不转换为一种类型?

最佳答案

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

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

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

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

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

关于c# - 当 'object' 的某个字段可以有多种类型时,如何访问它而不将其转换为一种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com