Хорошо, этот заголовок немного неясен, но я не могу придумать лучшего способа выразить его, кроме как объяснить его ...
Скажем, у меня есть класс Animal
со статическим, обобщенным методом:
public static T Create<T>() where T : Animal {
// stuff to create, initialize and return an animal of type T
}
И у меня есть подклассы Dog
, Cat
, Hamster
и т. Д. Чтобы получить Dog
, я могу написать:
Dog d = Animal.Create<Dog>();
или
Dog d = Dog.Create<Dog>();
что на самом деле одно и то же. Но кажется глупым, что приходится писать Dog
столько раз, так как я уже вызываю статический метод через подкласс Dog
.
Можете ли вы придумать какой-нибудь умный способ написания метода Create()
в базовом классе, чтобы я мог вызвать
Dog d = Dog.Create();
Cat c = Cat.Create();
Hamster h = Hamster.Create();
без записи Create()
метода в каждом из подклассов?