Tickers.All();
class Tickers : Eloquent
{
}
class Eloquent
{
public static void All()
{
Console.WriteLine("Класс из которого вызывали меня");
}
}
Хочу в классе Eloquent получить название класса Tickers.
Подскажите пожалуйста)
Ответ
Статические методы привязаны к определенному типу и не наследуются. В вашем случае Tickers.All() на самом деле скомпилится в Eloquent.All(), поэтому в рантайме не будет даже упоминания о Tickers
Чтобы реализовать вашу задумку, нужно немного подшаманить:
Вариант 1
class Tickers : Eloquent
{
public static new void All() => Eloquent.All();
}
class Eloquent
{
public static void All()
{
var stacktrace = new StackTrace();
var prevframe = stacktrace.GetFrame(1);
var method = prevframe.GetMethod();
Console.WriteLine($"Вызывающий класс: {method.ReflectedType.Name}");
}
}
Либо, как прокомментировал @Grundy, посмотреть еще один способ. Если коротко, то:
Вариант 2
class Tickers : Eloquent
class Eloquent
Комментариев нет:
Отправить комментарий