Сначала давайте установим это.
У меня есть
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();
}
Я изобрел новое ключевое слово, производное, для иллюстрации.
Кстати, я предпочту решение, не основанное на отражении, здесь!