泛型类型约束在哪里工作?

时间:2019-02-21 04:39:26

标签: c# generics types

我正在研究泛型约束,因此遇到了这种情况并被卡住了。我尝试通过自己的类复制代码,但出现“不一致的不可访问性”。

//this is the reference study class
public class MainView<T> : System.Windows.Window where T : INotifyPropertyChanged, new(){}

//my own
interface ITest{}

class B : ITest
{
    public B()
    {

    }
}

public class MyClass<T> : B where T : ITest, new()
{

}

我不知道这一点。参考学习班有什么?如何使用自己定义的类和接口进行相同的签名?

1 个答案:

答案 0 :(得分:2)

请注意您的ITest接口和B类没有显式的访问修饰符;如果未提供默认值,则默认值为internal(对于顶级类型),并且您正在MyClass类的public类中实现它们(比{{1 }},因此出现编译器错误)。解决方案是在这种情况下,将类型的访问修饰符更改为internal,或者将public类设为MyClass而不是internal

public

有关访问修饰符的更多信息,可以在这里找到: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/accessibility-levels