Скажем, у меня есть класс с любым количеством свойств любого типа
public class Test
{
public string A {get;set;}
public object B {get;set;}
public int C {get;set;}
public CustomClass D {get;set;}
}
Я хочу, чтобы все объекты внутри этого класса имели понятие "ошибки" и "предупреждения". Например, в зависимости от некоторых условий в другом классе, я могу установить предупреждение в свойстве A, а затем отобразить эту информацию в графическом интерфейсе. GUI не беспокоит меня; скорее, как мне установить это предупреждение? Я хотел бы иметь возможность сделать что-то вроде:
Для каждого свойства в классе добавьте свойство "Warning" и "Error", которое я могу сделать.
Test t = new Test();
t.A.Warning = "This is a warning that the GUI will know to display in yellow".
t.B.Error = null;
Каков наилучший способ сделать это? Было бы неплохо, если бы я мог добавить пользовательский атрибут к каждому свойству класса, который добавит эти дополнительные свойства и позволит мне получить доступ к ним в ясной форме.
Я видел решения, которые добавляют словарь к родительскому классу (Test), а затем передают строки, соответствующие именам свойств, или используют отражение, чтобы получить имя свойства и передать его, но я бы предпочел что-то более чистое.