我有一個名爲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不被基類c知道。
我如何獲得這種動態行爲?我不想在long switch/if語句中使用getType。
的事實類從'A'此處無關緊要繼承 - 'A'沒有一個'val',所以子類'VAL沒有關係。你可能只需要使用'object'作爲基類。我想這聽起來像你想使用'動態',如果你使用C#4.0+ – Blorgbeard
@Blorgbeard一個小小的改正。 c#4.0以及.net 4.0 –