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