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

一月

我有一个抽象类:

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://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters

本文列出了泛型类型参数的所有可用约束。不幸的是,似乎没有约束可以满足您的需求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从泛型类派生

来自分类Dev

泛型类使用泛型参数

来自分类Dev

泛型类作为参数

来自分类Dev

在C#中的基类中使用泛型:如何确保基类中的方法返回派生类的类型?

来自分类Dev

检查泛型参数类型是否从某个类X派生

来自分类Dev

泛型类型,其类型参数是抽象基类

来自分类Dev

将自引用传递给泛型类

来自分类Dev

在具有不同泛型参数的抽象类中返回泛型是不好的做法

来自分类Dev

如何将动态创建的类用作泛型?

来自分类Dev

如何遍历类列表并将其用作泛型类型?

来自分类Dev

从泛型类派生的c#问题

来自分类Dev

泛型抽象类继承

来自分类Dev

泛型T是抽象类的实现

来自分类Dev

如何指定泛型类?

来自分类Dev

如何从虚拟函数返回泛型派生类?

来自分类Dev

如何使用泛型返回泛型类的类类型?

来自分类Dev

如何用泛型扩展抽象类?

来自分类Dev

如何实现抽象类的泛型字段?

来自分类Dev

泛型方法类型不能用作泛型类的泛型类型

来自分类Dev

在泛型类型的泛型类上访问类型参数

来自分类Dev

使用 Autofac 解析泛型抽象类的所有派生类

来自分类Dev

Java泛型调用自类说明

来自分类Dev

泛型类继承自Dictionary with Collection

来自分类Dev

Scala 自类型和泛型类

来自分类Dev

什么是泛型类

来自分类Dev

类的Dlang泛型

来自分类Dev

什么是泛型类

来自分类Dev

类的Dlang泛型

来自分类Dev

泛型类等于