2010-06-11 44 views
0

使用TypeConverter進行序列化是否正常嗎?有一類我沒有擁有「有損」TypeConverter的課程。轉換爲字符串時,它使用「G4」格式化其浮點數據,以便在PropertyGrid中顯示此類型時,該數據易於閱讀。用於序列化的TypeConverter

我也想用這個TypeConverter從一個字符串轉換,創建這個類的一個實例。現在我正在檢查傳遞給TypeConverter.ConvertTo的CultureInfo,並且如果CultureInfo不是InvariantCulture,則只使用漂亮的有損轉換。

我想知道我是否以這種錯誤的方式去做。

回答

1

如果您要將數據序列化爲文件或其他交換格式以便在不同文化的用戶之間共享,則使用除InvariantCulture之外的任何內容都將無效。

TypeConverter可用於簡單的序列化場景,當所有需要的類型都已知具有適當的TypeConverter時。

+0

謝謝。當前是否使用TypeConverter對ProperyGrid進行有損格式化輸出也是正常的做法? – 2010-06-11 22:27:47

1

那麼,這是不正常的做法。你想一些類型的控制如何對象被序列化,以便它不會絆倒你只與PropertyGrid相關的細節。這不是通常很難做到:

class VendorSerialized { 
    public VendorSerialized(VendorType obj) { 
     // Set properties 
     //... 
    } 
    public VendorType AfterSerialization() { 
     var obj = new VendorType(); 
     // Set the vendor object properties from deserialized data 
     //... 
     return obj; 
    } 
    // Properties here... 
    //... 
} 

問題解決了:)

+0

我沒有看到文化特定的字符串如何最終作爲反序列化的輸入。我錯過了什麼嗎? – 2010-06-12 00:02:50

+0

呃,爲什麼當文化發生變化時,要反序列化呢?本地化是一個UI細節,它不應該影響持久數據。 「 – 2010-06-12 00:10:32

+0

」您需要對對象如何序列化進行某種控制,以便它不會讓您知道只與PropertyGrid相關的詳細信息。「 我在控制TypeConverter.ConvertToString,不是嗎?我有我需要的文化信息,以便決定我是在吐出一個美化的字符串還是無損表示。 我想我不完全理解你的迴應。 – 2010-06-12 00:28:53