Ceci est une question similaire à Comment se lier Une description personnalisée Enum sur un DataGrid , mais dans mon cas, j'ai plusieurs propriétés.
public enum ExpectationResult { [Description("-")] NoExpectation, [Description("Passed")] Pass, [Description("FAILED")] Fail } public class TestResult { public string TestDescription { get; set; } public ExpectationResult RequiredExpectationResult { get; set; } public ExpectationResult NonRequiredExpectationResult { get; set; } }
3 Réponses :
a Remarque Vous voudrez probablement remplacer typeconverter code> fera généralement le travail; Voici un code qui fonctionne pour
DataGridView CODE> - Ajoutez simplement votre code pour lire les descriptions (via réflexion, etc. - Je viens d'utiliser un préfixe à chaîne pour afficher le code de code personnalisé).
convertfrom code> aussi. Le convertisseur peut être spécifié au type ou em> le niveau de propriété (au cas où vous ne voulez que s'appliquer à certaines propriétés), et peut également être appliqué au moment de l'exécution si l'ENum n'est pas sous votre contrôle. p>
Merci Marc! Combinée à notre Enumhelper (semblable à la première partie de la réponse de Rally25rs), cette solution élégante fonctionne magnifiquement - dans un DataGridView. Malheureusement, j'ai trouvé que le DEVEXPRESS.XTRAGRID.GRIDCONTROL fait pas B> détecter l'attribut Typonverter. Soupir. Mais votre réponse est clairement correcte.
... Et tu m'as pointé dans la bonne direction. J'ai trouvé que Developer Express ne prévoit pas de l'appuyer et propose cette solution de contournement: DevExpress .com / support / centre / p / cs2436.aspx
Je ne suis pas sûr de savoir combien cela aide, mais j'utilise une méthode d'extension sur Enum qui ressemble à ceci: Vous pouvez utiliser une propriété personnalisée sur votre objet pour renvoyer le Nom: P> public class TestResult
{
public string TestDescription { get; set; }
public ExpectationResult RequiredExpectationResult { get; set; }
public ExpectationResult NonRequiredExpectationResult { get; set; }
/* *** added these new property getters *** */
public string RequiredExpectationResultDescr { get { return this.RequiredExpectationResult.GetDescription(); } }
public string NonRequiredExpectationResultDescr { get { return this.NonRequiredExpectationResult.GetDescription(); } }
}
+1 pour une bonne suggestion - merci; Nous avons déjà une classe d'énumhelper comme votre exemple et un autre développeur a suggéré les propriétés de la chaîne, mais je suis paresseux. ;)
Basé sur les deux autres réponses, j'ai mis en place une classe qui peut convertir génériquement entre une énumération arbitraire et une chaîne à l'aide d'un attribut de description sur chaque valeur Enum.
Ceci utilise System.comPonTmodel pour la définition de la descriptionAttribute, et ne prend en charge que la conversion entre t et chaîne. p>