我有一个非常简单的设计:
具有单个通用参数IElement<>
的通用接口T
:
interface IElement<T>
{
}
另一个管理
ISource<>
的通用接口IElement<>
在
ISource<>
中,我有一个方法返回IElement<>
的基础类型:T GetSomething();
这是我可以做的:
interface ISource<TElem, T>
where TElem : IElement<T>
{
T GetSomething();
}
class IntegersSource : ISource<IElement<int>, int>
{
public int GetSomething()
{
return 1;
}
}
但是必须重复嵌套类型(此处为
int
)。我想要类似的东西:
class IntegersSource : ISource<IElement<int>>
{
public int GetSomething()
{
return 1;
}
}
我试过了 :
interface ISource<TElem>
where TElem : IElement<T>
{
T GetSomething();
}
但是编译器对此语法不满意。
我担心我缺少明显的东西,但是呢?
感谢您的任何见解。
最佳答案
那行不通。图片您有以下课程:
class MultiElement : IElement<int>, IElement<double>
{
// explicit interface implementations of IElement<int> and IElement<double> here.
}
现在,当我声明
class MySource : ISource<MultiElement>
时,应该推断为什么T
?关于c# - C#可以利用隐式嵌套的泛型参数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21677517/