vit*_*tch 2 c# syntax inheritance static types
我想在C#中做这样的事情
public class ParentClass {
public static ParentClass GetSomething()
{
var thing = new // ?????
return thing;
}
}
public class ChildClass : ParentClass {
}
Run Code Online (Sandbox Code Playgroud)
然后我希望能够在子类上调用静态方法,如下所示:
ChildClass blah = ChildClass.GetSomething();
Run Code Online (Sandbox Code Playgroud)
例如,当在子类上调用静态方法时,我想实例化子类的实例.但我只想在父级上定义静态方法.这是可能吗?我很高兴,即使:
ChildClass blah = (ChildClass) ChildClass.GetSomething();
Run Code Online (Sandbox Code Playgroud)
谢谢!
这闻起来很糟糕,但你可以这样做:
public class ParentClass {
public static T GetSomething<T>() where T : ParentClass, new() {
return new T();
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
ParentClass parent = ParentClass.GetSomething<ParentClass>();
ChildClass child = ChildClass.GetSomething<ChildClass>();
Run Code Online (Sandbox Code Playgroud)
这也是合法的:
ParentClass parent = ChildClass.GetSomething<ParentClass>();
Run Code Online (Sandbox Code Playgroud)
这有助于这种ParentClass parent = ParentClass.GetSomething<ParentClass>()气味(是的,它只是编译,但它仍然闻到).
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |