TypeConverter用于序列化

时间:2010-06-11 22:10:57

标签: .net serialization typeconverter

使用TypeConverter进行序列化是正常的做法吗?有一个我不拥有的类有一个“有损”的TypeConverter。转换为字符串时,它会使用“G4”格式化其浮点数据,以便在PropertyGrid中显示此类型时,它很容易读取。

我还想使用此TypeConverter从字符串转换,创建此类的实例。现在我正在检查传递给TypeConverter.ConvertTo的CultureInfo,如果CultureInfo不是InvariantCulture,则仅使用漂亮的有损转换。

我想知道我是否采取了错误的方式。

2 个答案:

答案 0 :(得分:1)

如果要将数据序列化为文件或其他交换格式,以便在不同文化的用户之间共享,那么使用InvariantCulture之外的任何内容都将无效。

当已知所有需要的类型具有适当的TypeConverter时,TypeConverter可用于简单的序列化方案。

答案 1 :(得分: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...
    //...
}

问题解决了:))