OK、そのタイトルが少し不明であるが、私はそれを説明する以外に、それを置くことのより良い方法を考えることはできません...継承された静的メソッドのクラスコンテキストを検出することは可能ですか?
は、私は、静的な、汎用的な方法で、クラス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>();
O r
Dog d = Dog.Create<Dog>();
実際には同じことです。しかし、Dog
サブクラスを介して既に静的メソッドを呼び出しているので、Dog
を何度も書く必要があります。私は、サブクラスのそれぞれにCreate()
方法を記述することなく
Dog d = Dog.Create();
Cat c = Cat.Create();
Hamster h = Hamster.Create();
を呼び出すことができるように
あなたは、基本クラスでCreate()
メソッドを書くのいずれかの巧妙な方法を考えることはできますか?
'T'をAnimalsに制限したいと思うかもしれません:' class Animal T:Animal ' –
dtb
@dtb:確かに!レスポンスが更新されました。 –
Create()内のコードは、仮想/抽象メソッドを呼び出します。つまり、派生型のインスタンスを作成する方法です。 –