如何确保从抽象泛型类派生的类使用自身作为泛型参数

3

我有一个抽象类:

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("");
}
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接