Ich bin mir nicht sicher, wie viel dies hilft aber ich benutze eine Erweiterungsmethode auf Enum, die wie folgt aussieht:
/// <summary>
/// Returns the value of the description attribute attached to an enum value.
/// </summary>
/// <param name="en"></param>
/// <returns>The text from the System.ComponentModel.DescriptionAttribute associated with the enumeration value.</returns>
/// <remarks>
/// To use this, create an enum and mark its members with a [Description("My Descr")] attribute.
/// Then when you call this extension method, you will receive "My Descr".
/// </remarks>
/// <example><code>
/// enum MyEnum {
/// [Description("Some Descriptive Text")]
/// EnumVal1,
///
/// [Description("Some More Descriptive Text")]
/// EnumVal2
/// }
///
/// static void Main(string[] args) {
/// Console.PrintLine(MyEnum.EnumVal1.GetDescription());
/// }
/// </code>
///
/// This will result in the output "Some Descriptive Text".
/// </example>
public static string GetDescription(this Enum en)
{
var type = en.GetType();
var memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
var attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs != null && attrs.Length > 0)
return ((DescriptionAttribute)attrs[0]).Description;
}
return en.ToString();
}
Sie eine benutzerdefinierte Eigenschaft Getter auf Ihrem Objekt verwenden, könnte die Rückkehr Name:
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(); } }
}
Dann binden Sie Ihre Raster auf die "RequiredExpectationResultDescr" und "NonRequiredExpectationResultDescr" Eigenschaften.
, die ein wenig zu kompliziert sein könnte, aber es ist das erste, was ich mit :)
Danke Marc! In Kombination mit unserem EnumHelper (ähnlich dem ersten Teil der Antwort von rally25rs) funktioniert diese elegante Lösung wunderbar - in einem DataGridView. Leider habe ich festgestellt, dass DevExpress.XtraGrid.GridControl ** das TypeConverter-Attribut ** nicht erkennt. Seufzer. Aber deine Antwort ist eindeutig richtig. – TrueWill
... und du hast mich in die richtige Richtung gezeigt. Ich habe festgestellt, dass Developer Express dies nicht unterstützen möchte, und bietet diese Problemumgehung: http://www.devexpress.com/Support/Center/p/CS2436.aspx – TrueWill