如何继承泛型参数?

voi*_*ter 21 c#

我基本上想要这样做:

class UILockable<T> : T
    where T : UIWidget
{
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.我见过人们建议你这样做:

class UILockable<T>
    where T : UIWidget
{
    private T _base;
}
Run Code Online (Sandbox Code Playgroud)

这将要求我覆盖UILockable需要的每个函数并将其转发给T.这是不可能的,因为T可能来自UIWidget并且具有自己独特的抽象/虚拟方法.

有没有办法简单地从T继承?

Meh*_*ari 22

您不能从泛型类型参数继承.C#泛型与C++模板非常不同.继承type参数要求类具有基于类型参数的完全不同的表示,这与.NET泛型不同.它们在IL和本机级别上是相同的(对于所有引用类型参数).