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