蓝色块是抽象类。 绿色块是普通类。
我遇到的问题是:
我想在Sub_BaseClass变量中保存C,D或E对象,但编译器告诉我需要指定泛型类的类型。
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;
这可能吗?
谢谢!
答案 0 :(得分:1)
如果你真的想在Sub_BaseClass变量中保存C,D和E,你必须使用泛型参数,因为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>;
...
}
我希望这会有所帮助。