我有一个非常简单的设计:


具有单个通用参数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/

10-13 06:54