C#: 如何使用类型转换器本地化枚举

7
我正在尝试理解如何在阅读了另一个问题的答案后使用类型转换器。但我不确定是否完全理解了它...
在我的特定情况下,我想通过根据枚举成员获取资源字符串来“转换”枚举成员为本地化字符串。例如,如果我有这个枚举:
public enum Severity
{
    Critical,
    High,
    Medium,
    Low
}

或者这个:

public enum Color
{
    Black = 0x0,
    Red = 0x1,
    Green = 0x2,
    Blue = 0x4,
    Cyan = Green | Blue,
    Magenta = Red | Blue,
    Yellow = Red | Green,
    White = Red | Green | Blue,
}

我该如何创建一个类型转换器,将这些成员转换为本地化字符串?我该如何使用它?目前我需要在WinForms应用程序中使用它,但更通用的示例也可以。
2个回答

6
创建TypeConverter很简单,只需创建一个继承自TypeConverter的类。使用TypeConverterAttribute标记您的类,这样每当有人尝试在您的类上进行转换操作时,将调用您的TypeConverter。

一旦继承了TypeConverter,您应该重写一些它的方法以实现自己想要的功能。您可能需要从ConvertFrom()、ConvertTo()和ConvertToString()开始 - 这是您实现提取本地化字符串版本逻辑的地方。

要使用TypeConverter,您可以编写以下代码:

var foo = TypeDescriptor.GetConverter(typeof(T));
var mystring = foo.ConvertToString(myObject));

MSDN当然提供了TypeConverter实现的文档和一些例子


1
但是你如何进行转换? - Svish

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接