Ajouter des attributs supplémentaires à chaque propriété d'une classe

Dire que j'ai une classe avec un certain nombre de propriétés de n'importe quel type de

public class Test
{
public string A {get;set;}
public object B {get;set;}
public int C {get;set;}
public CustomClass D {get;set;}
}

Je veux tous les objets à l'intérieur de cette classe pour avoir une notion des "erreurs" et des "avertissements". Par exemple, basée sur une condition dans une autre classe, je souhaiterez peut-être définir un avertissement sur la propriété d'Un, puis d'afficher cette information dans l'interface graphique. L'interface graphique n'est pas mon souci, mais plutôt comment dois-je mettre cet avertissement? J'aimerais être capable de faire quelque chose comme:

Pour chaque propriété dans une classe, ajouter un "Avertissement" et "Erreur" bien telle que je peux faire..

Test t = new Test();
t.A.Warning = "This is a warning that the GUI will know to display in yellow".
t.B.Error = null;

Quelle est la meilleure façon de faire cela? Ce serait bien si je pouvais ajouter un attribut personnalisé pour chaque propriété de la classe qui permettrait d'ajouter à ces propriétés supplémentaires et me permettre d'y accéder de façon claire.

J'ai vu des solutions qui ajoutent un Dictionnaire de la classe parent (Test), et puis la passer dans des chaînes de caractères qui correspondent aux noms de propriétés, ou utiliser la réflexion pour obtenir le nom de la propriété et de l'en, mais je préfère quelque chose de plus propre.

source d'informationauteur user981225