我有一个名为A的抽象类,还有其他实现A的类(B、C、D、E等)。
我的派生类保存不同类型的值。
我还有一个A对象列表。
abstract class A { }
class B : class A
{
public int val {get;private set;}
}
class C : class A
{
public double val {get;private set;}
}
class D : class A
{
public string val {get;private set;}
}
class Program
{
static void Main(string[] args)
{
List list = new List { new B(), new C(), new D(), new E() };
// ...
foreach (A item in list)
{
Console.WriteLine(String.Format("Value is: {0}", item.val);
}
}
}
...其中.val属性不被基类所知。
我该如何获得这种动态行为?我不想在一长串的switch/if语句中使用getType方法。
A
类并不重要 -A
没有val
,所以子类的val
之间没有关系。你可以直接使用object
作为基类。如果你正在使用C# 4.0+,我猜你想使用dynamic
。 - Blorgbeard