Вы не можете сделать это, потому что ваш единственный путь к производному типу от одной из его баз - от экземпляра, а статические методы не берут экземпляр.
Я надеюсь, что ваш примердля простоты, потому что в противном случае повторная реализация GetType () кажется немного бессмысленной - поскольку object.GetType()
будет делать именно то, что вы хотите.
Если вам действительно нужно сделать это с помощью статически вызываемого метода - вы можете 't потому что никакая информация о типах на самом деле не доступна статическому методу (как я сказал в первом абзаце).
Если вы на самом деле вызываете этот метод через экземпляр (но я должен спросить, почему !?), тогда вы можете сделатьодин из следующих
a) Сделайте ваш метод экземпляром метода на базе.Затем он может выполнить this.GetType()
(используя базовый метод .Net) и вернет окончательный подтип экземпляра.
b) Определить метод расширения для BaseClass
, который делает нечто очень похожее:
public static Type GetType2(this BaseClass instance)
{
return instance.GetType();
}