繁体   English   中英

继承类上的泛型类型转换错误

[英]Generic Type conversion error on inherited classes

我试图创建一个 mvc 框架来定义我正在处理的项目的工作流程。 我创建了视图和控制器类,并试图让 ui 控制器类是通用的,以便在从 ui 控制器继承时为其分配一种 uiview:

UIView 类

    public class UIView
    {
    }

UIController 类

    public class UIController<T> where T : UIView
    {
    }

UIView类的实现

    public class UIMenuView : UIView
    {
    }

使用 UI 菜单视图实现 UIController 类

    public class MenuController : UIController<UIMenuView>
    {
    }

工作流程实施

    void main()
    {
        var menuController = new MenuController();
        SetController(menuController as UIController<UIView>);
    }

    public void SetController(UIController<UIView> controller, bool asRoot = false)
    {
    }

问题是我在尝试设置控制器时遇到以下错误:

无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换 [Assembly-CSharp] 将类型“MenuController”转换为“UI.UIController<UI.UIView>”

有人知道我在这里做错了什么吗? 谢谢!

下图显示了您的继承层次结构。 您将menuController as UIController<UIView>是用红色箭头描述的,这是错误的。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM