TypeConverter для сериализации - PullRequest
0 голосов
/ 12 июня 2010

Является ли обычной практикой использование TypeConverter для сериализации? Есть класс, которым я не владею, у которого есть TypeConverter с потерями. При преобразовании в строку он форматирует свои данные с плавающей запятой с помощью «G4», поэтому, когда этот тип отображается в PropertyGrid, он легко читается.

Я также хотел бы использовать этот TypeConverter для преобразования из строки, создавая экземпляр этого класса. Сейчас я проверяю, что CultureInfo передается в TypeConverter.ConvertTo, и использую только красивое преобразование с потерями, если CultureInfo не InvariantCulture.

Я бы хотел знать, правильно ли я поступаю по этому поводу.

Ответы [ 2 ]

1 голос
/ 12 июня 2010

Ну, это не нормальная практика.Вы бы хотели некоторый вид контроля над сериализацией объекта, чтобы он не вводил вас в заблуждение деталями, относящимися только к 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...
    //...
}

Проблема решена:)

1 голос
/ 12 июня 2010

Если вы сериализуете данные в файл или другой формат обмена для совместного использования пользователями разных культур, использование чего-либо, кроме InvariantCulture, не будет работать.

TypeConverter можно использовать в простых сценариях сериализации, когда известно, что все необходимые типы имеют соответствующий TypeConverter.

...