Sha*_*ica 6 c# generics inheritance
好吧,这个标题有点不清楚,但我想不出更好的方式来解决它,除了解释它...
假设我有一个类Animal,使用静态的泛型方法:
public static T Create<T>() where T : Animal {
// stuff to create, initialize and return an animal of type T
}
Run Code Online (Sandbox Code Playgroud)
我有子类Dog,Cat,Hamster等为了得到一个Dog,我可以这样写:
Dog d = Animal.Create<Dog>();
Run Code Online (Sandbox Code Playgroud)
要么
Dog d = Dog.Create<Dog>();
Run Code Online (Sandbox Code Playgroud)
这真是一回事.但是编写Dog这么多次似乎有点傻,因为我已经通过Dog子类调用静态方法了.
你能想到Create()在基类中编写方法的任何聪明方法,以便我可以调用
Dog d = Dog.Create();
Cat c = Cat.Create();
Hamster h = Hamster.Create();
Run Code Online (Sandbox Code Playgroud)
没有Create()在每个子类中编写方法?
Rom*_*ier 10
您可以使Animal类具有通用性.
class Animal<T> where T : Animal<T>
{
public static T Create()
{
// Don't know what you'll be able to do here
}
}
class Dog : Animal<Dog>
{
}
Run Code Online (Sandbox Code Playgroud)
但是Animal类如何知道如何创建派生类型的实例?
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |