我没有理解为什么我试图转换为通用基类不起作用.
代码的基本结构如下.
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)
希望我提供了足够的信息,这是一个协方差\逆转问题吗?
谢谢
| 归档时间: |
|
| 查看次数: |
8345 次 |
| 最近记录: |