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