Получение значения свойства без создания экземпляра
Есть абстрактный класс TriggerAction
:
public abstract class TriggerAction
{
public abstract string Name { get; }
public abstract Task<bool> ExecuteAsync(TriggerContext context);
}
Каждый наследник TriggerAction
по-своему реализует свойство Name
и обладает каким-то своим функционалом. Например:
public class ActionProcessStart : TriggerAction
{
public override string Name => "Запуск процесса";
public string ProcessName { get; set; }
public string Arguments { get; set; }
public bool WaitForExit { get; set; }
public override async Task<bool> ExecuteAsync(TriggerContext context)
{
try
{
if (WaitForExit)
await Process.Start(ProcessName, Arguments).WaitForExitAsync();
else
Process.Start(ProcessName, Arguments);
return true;
}
catch
{
return false;
}
}
}
Хотел сделать динамичный UI по свойствам класса. Нахожу в сборке все классы-наследники, хотел получить Name
тоже, но в последний момент понял, что рефлексия не сможет мне вернуть значение переопределенного свойства Name. Видимо, я выбрал неправильную стратегию. В то же время, статическое свойство выглядит грубовато и никак не уживается с абстрактными классами и т.д. Есть ли другие решения?