我正在尝试构建一个XML解释器,并且有很多继承正在进行。当我有一个列表并且我想访问特定类型的抽象时,有一个简短的方法吗?这就是我目前正在做的事情:
abstract class Foo{}
class iFoo : Foo
{
int bar;
}
class xFoo : Foo
{
string bar;
}
class Main
{
List<Foo> fooList;
public static void Main (string[]args)
{
iFoo iBar = fooList[0] as IFoo;
xFoo xBar = fooList[1] as XFoo;
iBar.bar = 10;
xBar.bar = "hello world";
}
}
*fooList
已初始化并填充在代码的其他部分,这只是我的问题的一个示例。
我正在寻找一种更简单的方法,例如:
fooList[0](as type iFoo).bar = 10;
答案 0 :(得分:1)
如果您知道实例上有哪些属性或方法,则可以转换为dynamic
,以便编译器不会干扰它。
看起来像这样:
dynamic instance = fooList[0];
instance.bar = value;
value
是您要分配的值的占位符
但请记住,操作必须有效。您只能因为投放到string
而无法将int
分配给dynamic
。
答案 1 :(得分:0)