У меня есть что-то вроде этого:Как вернуть общий абстрактный класс?
abstract class BaseClass<T>
{
protected BaseClass(){}
}
class Class1 : BaseClass<Class1>
{
public static Class1 Instance = new Class1();
private Class1(){}
}
class Class2 : BaseClass<Class2>
{
public static Class2 Instance = new Class2();
private Class2(){}
}
...
public BaseClass<T> Method<T>(int z) where T: BaseClass<T>
{
switch(z)
{
case 1:
return Class1.Instance;
case 2:
return Class2.Instance;
}
}
Это очень важно, чтобы эти классы не могут быть созданы, так как их construstors являются частными, поэтому мы не можем сделать, как
public BaseClass<T> Method<T>(int z) where T: BaseClass<T>,
новый()
Как могу ли я использовать абстрактный класс как возвращаемый тип? Я просто не могу это понять. Буду признателен за любую помощь здесь.
Дело в том, что «Метод» похож на метод фабрики ... Вся зависимость немного усложняется, и я опубликовал как можно более простой скелет. Проблема заключается в том, что я не могу в switch switch возвращать те Class1.Instance, потому что он говорит: «Невозможно преобразовать Class1 для возврата типа BaseClass –
2009-03-09 10:22:54