bien, ese título es un poco confuso, pero no puedo pensar en una mejor manera de decirlo, aparte de explicarla ...¿Es posible detectar el contexto de clase en un método estático heredado?
Decir que tengo una clase Animal
, con un método estático, genérica:
public static T Create<T>() where T : Animal {
// stuff to create, initialize and return an animal of type T
}
Y tengo subclases Dog
, Cat
, Hamster
etc. con el fin de obtener una Dog
, puedo escribir:
Dog d = Animal.Create<Dog>();
o r
Dog d = Dog.Create<Dog>();
que es realmente lo mismo. Pero parece un poco tonto tener que escribir Dog
tantas veces, ya que estoy invocando el método estático a través de la subclase Dog
.
¿Se puede pensar en ninguna forma inteligente de escribir un método Create()
en la clase base para que pudiera invocar
Dog d = Dog.Create();
Cat c = Cat.Create();
Hamster h = Hamster.Create();
sin escribir un método Create()
en cada una de las subclases?
Probablemente desee restringir 'T' a Animals:' class Animal donde T: Animal ' –
dtb
@dtb: Sure! Respuesta actualizada, gracias. –
El código dentro de Create() llamará a los métodos virtuales/abstractos, así creará instancias de tipos derivados. –