我有一个抽象类:
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("");
}