C# 如何从通用接口调用InterfaceMethods
比如说,我有一个通用接口C# 如何从通用接口调用InterfaceMethods,c#,C#,比如说,我有一个通用接口 IWhatEver:where T:。。。。 { T DoStuff(对象值); } 类Foo:IWhatEver{…} 类栏:IWhatEver{…} 这个接口由几个类实现 如何在列表中存储此接口的实例,以及如何调用DoStuff函数 大概是这样的: List>();//不起作用。。。 添加(新的Foo()); 添加(新条()); var whatwillhisbe=whatEvers.Select(w=>w.DoStuff(带someobject)); 我相信这
IWhatEver:where T:。。。。
{
T DoStuff(对象值);
}
类Foo:IWhatEver{…}
类栏:IWhatEver{…}
这个接口由几个类实现
如何在列表中存储此接口的实例,以及如何调用DoStuff函数
大概是这样的:
List>();//不起作用。。。
添加(新的Foo());
添加(新条());
var whatwillhisbe=whatEvers.Select(w=>w.DoStuff(带someobject));
我相信这是不可能的,但也许我忘了什么?一个选项是创建一个非泛型的基本接口并从中继承泛型
IWhatEver
{
object DoStuff(object value);
}
IWhatEver<T> : IWhatEver where T : ....
{
new T DoStuff(object value);
}
不,不太可能。您需要从非泛型接口继承泛型接口,这将引入另一个复杂的堆,并为您的方法返回值,et c.=)使用
dynamic
?在那种情况下不能使用dynamic…很遗憾。是的,我正在考虑这种方法,但我需要将接口添加到现有类中。我想我会将其更改为Object,并且不使用任何泛型:/
abstract class BaseWhatEver<T> : IWhatEver<T>
{
abstract T DoStuff(object value);
object IWhatEver.DoStuff(object value)
{
return ((IWhatEver<T>) this)DoStuff(value);
}
}