有点奇怪为什么这不起作用
这是编译器的一个限制还是不支持它很有意义?

public class Class1<T> : IInterface
    where T : Test2
{
    public T Test { get; private set; }
}

public class Test2
{
}

internal interface IInterface
{
    Test2 Test { get; }
}

我得到的错误是
'ClassLibrary1.Class1<T>' does not implement interface member 'ClassLibrary1.IInterface.Test'.
'ClassLibrary1.Class1<T>.Test' cannot implement 'ClassLibrary1.IInterface.Test' because it does not have the matching return type of 'ClassLibrary1.Test2'.

最佳答案

为了更正确,请显式实现接口:

public class Class1<T> : IInterface
where T : Test2
{
    public T Test { get; private set; }

    Test2 IInterface.Test
    {
        get { ... }
    }
}

然后可以避免编译错误。

关于c# - 用通用约束实现接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12817911/

10-10 22:57