Cap*_*mic 2 c# generics polymorphism
我创建了基本泛型类,没有只有一个方法的字段
public class Base<T> where T:class
{
public static T Create()
{
// create T somehow
}
}
public class Derived1 : Base<Derived1>
{
}
public class Derived2 : Base<Derived2>
{
}
public class Program
{
bool SomeFunction()
{
// Here I need reference to base class
Base baseref; // error here
switch(somecondition)
{
case 1:
baseref = Derived1.Create();
break;
case 2:
baseref = Derived1.Create();
break
}
// pass baseref somewhere
}
}
Run Code Online (Sandbox Code Playgroud)
一个明显的选择是将基类转换为接口,但这是不可能的,因为接口不能包含静态方法.
我想我需要一些中级基类.请建议
您必须从Base类中删除泛型参数,您可以将其移动到Create方法:
public class Base
{
public static T Create<T>() where T : class
{
return Activator.CreateInstance<T>();
}
}
public class Derived1 : Base
{
}
public class Derived2 : Base
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1534 次 |
| 最近记录: |