2009-07-13 47 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