首先让我们确定这一点。
我有
public abstract class Foo
{
public static void StaticMethod()
{
}
}
public class Bar : Foo
{
}
打电话有效吗
Bar.StaticMethod();
???
如果是这样,让我们扩展前面的示例:
public abstract class Foo
{
public static void StaticMethod()
{
}
public abstract void VirtualMethod();
}
public class Bar : Foo
{
public override void VirtualMethod()
{
Trace.WriteLine("virtual from static!!!!");
}
}
我应该如何在基类中构造 StaticMethod,以便可以从派生类中使用 VirtualMethod?看来我今天的咖啡因太少/太多了,我什么都没有想到。
嗯,我知道我不能从静态方法调用实例方法。所以问题来了:
我可以从基类的静态方法创建派生类的实例吗?通过使用类似的东西:
public static void StaticMethod()
{
derived d=new derived();
d.VirtualMethod();
}
为了说明的目的,我发明了新的关键字,派生。
顺便说一句,我会在这里支持基于非反射的解决方案!