首页 > 解决方案 > 其中 Generic T 是抽象类的实现

问题描述

给定以下类和层次结构:

public abstract class AbsractClass<T>
{ 
    public T Id { get; private set; }
}

public class ImplementationA : AbsractClass<Guid> { }

public class ImplementationB : AbsractClass<int> { }

我应该在where子句/约束中使用什么约束来指定泛型 T 必须是 AbsractClass 的实现。这意味着实体将接受实施A 或实施B。

public abstract class Entity<T> // where : T ?
{ 
}

这是可能的还是我应该使用接口来代替?

标签: c#.net-core

解决方案


您需要添加两个通用参数才能使其工作:

public abstract class Entity<T, TKey>  where T : AbstractClass<TKey>
{
}

通用接口的行为方式相同。


推荐阅读