我知道标题可能有点混乱,但让我解释什么,我试图完成..推断类型泛型类
让我们假设我有类
public class TestA<T>
{
public T Key { get; set; }
}
而且类
public class TestB : TestA<int>
{
public string Name { get; set; }
}
正如你所看到的,TestB
继承TestA<int>
,因此继承了财产public int Key
现在,让我们添加一个接口
public interface TestC<T> where T : TestA<X>
{
T DoSomething(X argument);
}
这里的地方我有麻烦了。
我想DoSomething
方法,采取任何类型的参数的超类的T
(TestA<>
)时,在TestB
的情况下,这将是int
。
所以,如果我有TestC<TestB>
类型的实现,我想DoSomething
签名是:
public TestB DoSomething(int argument);
的问题是,TestA<X>
不编译,我不能管理来实现这一
请问,你知道这是可能吗?如果是这样,你能解释一下吗?
也许我可以用反思?
为什么我们需要将其添加到''TestC'',做'nt得到它 – 2014-09-04 19:31:28
我不想手动添加它并将它作为一个通用参数传递,我希望编译器推断它:( – 2014-09-04 19:31:32
@MatiCicero你不能那样做,你需要手动指定它。 – Servy 2014-09-04 19:31:53