То, что я пытаюсь сделать здесь, это вывести тип T абстрактного класса из типа конкретного наследуемого класса.
Например, у меня есть общий абстрактный класс:
public abstract class MyAbstract<T> where T : class {
//Methods...
}
И наследующий конкретный класс, который наследует MyAbstract
:
public class MyConcrete : MyAbstract<MyConcrete> {
//Methods..
}
Теперь, у меня это отлично работает, но я нахожу его многословным для этого абстрактного класса, так как он всегда будет иметь тип наследуемого класса. Я знаю, что можно сделать общий вывод типа для методов (спасибо Джон Скит http://joelabrahamsson.com/a-neat-little-type-inference-trick-with-c/),, но я не могу найти способ сделать это для вышеупомянутого.
В идеале, я бы
//Type T on MyAbstract is inferred to be MyConcrete.
public class MyConcrete : MyAbstract {
//Methods...
}
Возможно ли то, что я хочу?