class Program
{
public static void Main(string[] args)
{
List<MyInterface> myList = new List<MyInterface>();
myList.Add(new MyClass<int>());
foreach (MyInterface item in myList)
{
(MyClass)item).Foo(); // <---- Critical Line
}
}
}
interface MyInterface { }
class MyClass<T> : MyInterface
{
public MyClass() { }
public void Foo() { DoSomething(); }
}
我想使用的MyClass
的Foo()
方法不知道該對象的excact(通用)類型。有什麼方法可以調用它嗎?編譯代碼時我會知道T
,所以我可以將它存儲在通過InterfaceB
實現的屬性中?對象添加到集合不知道它的泛型類型
感謝您的幫助!
編輯:對不起,不清楚;還有其他類實現MyInterface
,我正在檢查項目的類型是ClassB,所以我不能把Foo()
放入MyInterface
。
目前尚不清楚哪個界面對您很重要。你真的需要*'InterfaceA'和'ClassA'來證明你的問題,或者你真的只關心如何調用'Foo'? – 2013-03-16 17:25:02
@Jon Skeet你是對的。我只是把它放在我的項目中遇到問題的方式。 – 2013-03-16 17:27:30
在你的界面聲明'Foo'。 – 2013-03-16 17:32:24