【问题标题】:complex model with generic types and inheritance具有泛型类型和继承的复杂模型
【发布时间】:2016-07-15 07:27:18
【问题描述】:

我得到了这个数据模型。(我不确定它是否是最好的方法)

蓝色块是抽象类。 绿色块是普通类。

我遇到的问题是:

我想将 C、D 或 E 对象保存在 Sub_BaseClass 变量中,但编译器告诉我需要指定泛型类的类型。

Sub_BaseClass<?> variable;

variable = (Sub_BaseClass<?>)objct;

我知道“objct”类型将是 C、D 或 E 类。 我尝试在 Sub_BaseClass 泛型之前向该模型添加一个没有泛型类型的 Sub_BaseClass,但我需要指定 BaseClass 的类型,然后我失去了 C、D 和 E 中的泛型类型。

我该如何解决这个问题? 我想要/需要做类似的事情:

Sub_BaseClass variable;

variable = (Sub_BaseClass)objct;

这可能吗?

谢谢!

【问题讨论】:

    标签: c# oop generics


    【解决方案1】:

    如果您真的想将 C、D 和 E 保存在 Sub_BaseClass 变量中,您必须使用泛型参数,因为 Sub_BaseClass 是泛型类。

    这也意味着使用 Sub_BaseClass 变量的所有代码都必须是通用代码。例如:

    public class BaseClass
    {
    }
    
    public class Sub_BaseClass<T> : BaseClass
    {
    }
    
    ...
    
    public void DoSomething<T>(BaseClass objct)
    {
      Sub_BaseClass<T> variable;
    
      variable = objct as Sub_BaseClass<T>;
    
      ...
    }
    

    我希望这会有所帮助。

    【讨论】:

    • 但是在 DoSomething 方法中我不知道具体的类型。我只知道对象将是 C、D 或 E,但不是其中之一。 ://
    • ...然后只需使用BaseClass 而不是Sub_BaseClass&lt;&gt; 或许`?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2018-09-27
    • 2015-09-15
    相关资源
    最近更新 更多