Получение значения свойства без создания экземпляра

Есть абстрактный класс 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. Видимо, я выбрал неправильную стратегию. В то же время, статическое свойство выглядит грубовато и никак не уживается с абстрактными классами и т.д. Есть ли другие решения?


Ответы (0 шт):