其中泛型 T 是抽象类的实现

Ove*_*ack 1 c# .net-core

给定以下类和层次结构:

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

public class ImplementationA : AbsractClass<Guid> { }

public class ImplementationB : AbsractClass<int> { }
Run Code Online (Sandbox Code Playgroud)

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

public abstract class Entity<T> // where : T ?
{ 
}
Run Code Online (Sandbox Code Playgroud)

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

Gur*_*ron 5

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

public abstract class Entity<T, TKey>  where T : AbstractClass<TKey>
{
}
Run Code Online (Sandbox Code Playgroud)

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