у меня пять классов
class Program
{
static void Main(string[] args)
{
Abstract test = new Child();
test.Exectue();
}
}
public abstract class Abstract
{
public void Exectue()
{
IStrategy strategy = new Strategy();
strategy.GetChildClassName();
}
}
public class Child : Abstract
{
}
public interface IStrategy
{
void GetChildClassName();
}
public class Strategy : IStrategy
{
public void GetChildClassName()
{
???
Console.WriteLine();
}
}
У меня вопрос: как я могу получить имя класса Child (класса, являющегося экземпляром тестовой переменной) из класса Strategy.
Выполнение this.GetType().Name
дает «Стратегию», а
var mth = new StackTrace().GetFrame(1).GetMethod();
var cls = mth.ReflectedType.Name;
выдает "Абстракт", что не то, что я хочу.
Есть ли способ, которым я могу получить имя класса Child, не совершая каких-то странных попыток, таких как выдача исключений или передача типов.