2009-07-13 29 views
7

我想知道如何使用类型转换器后阅读this answer我的其他问题之一。但我不知道如果我完全得到它...C#:如何使用类型转换器来本地化枚举

在我的特殊情况下,我想通过获取资源字符串根据它是什么枚举成员来“转换”enum成员为本地化字符串。因此,举例来说,如果我有这个枚举:

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应用程序中使用它,但更常用的示例也是受欢迎的。

回答

6

要创建TypeConverter,只需创建一个从TypeConverter继承的类。然后你使用TypeConverterAttribute来标记你的类,这样当有人在你的类上尝试一个转换操作时,你的TypeConverter被调用。

一旦你从TypeConverter继承,你应该重写它的一些方法来做你想做的。您可能会想要查看ConvertFrom(),ConvertTo()和ConvertToString()以开始 - 这就是您要实现逻辑来抽取字符串的本地化版本的位置。

要使用的TypeConverter,你的代码是这样的:

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

MSDN当然有类型转换器实现的documentation and some examples

+1

但你如何做转换? – Svish 2009-07-13 07:00:14