我有一个抽象类:
public abstract class MyAbstractBase<T> : INotifyPropertyChanged where T : MyAbstractBase<T> {}
我派生出几个类:
public class Concrete1 : MyAbstractBase<Concrete1> {};
public class Concrete2 : MyAbstractBase<Concrete2> {};
有没有办法约束 MyAbstractBase 以便泛型类型是特定的具体类型?
所以这应该会产生编译器错误:
public class Concrete1 : MyAbstractBase<Concrete2> {};
我当前的解决方法是检查基本构造函数,不幸的是,它不会引发编译器警告。
protected MyAbstractBase()
{
_ = this as T ?? throw new Exception("");
}
https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters
本文列出了泛型类型参数的所有可用约束。不幸的是,似乎没有任何限制可以满足您的需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)