小编Ras*_*aby的帖子

转换为通用基类失败

我没有理解为什么我试图转换为通用基类不起作用.

代码的基本结构如下.

interface ICmd
{
}

class Context
{
}

class Cmd<TContext> : ICmd
    where TContext : Context
{
}

class MyContext : Context
{
}

class MyCmd : Cmd<MyContext>
{
}
Run Code Online (Sandbox Code Playgroud)

所以现在我有一个ICmd的实例,并希望将其转换为Cmd,如下所示

var base = cmd as Cmd<Context>
Run Code Online (Sandbox Code Playgroud)

执行此行后,base始终为null.

将强制转换更改为仅适用于上下文并且有效.

var base = cmd as Cmd<MyContext>       -- this works ???
Run Code Online (Sandbox Code Playgroud)

希望我提供了足够的信息,这是一个协方差\逆转问题吗?

谢谢

.net c# generics

4
推荐指数
1
解决办法
8345
查看次数

标签 统计

.net ×1

c# ×1

generics ×1