2012-04-29 2 views
2

Я использую службу WCF с кодом, который был создан из конечной точки mex.Как правильно сериализовать автоматически сгенерированные типы WCF

Я хотел бы иметь возможность сериализовать классы, которые были автоматически сгенерированы.

Моя проблема в том, что эти автоматически генерируемые классы реализуют System.ComponentModel.INotifyPropertyChanged интерфейс, а иногда и при сериализации их, я получаю следующее исключение:

Type 'System.ComponentModel.PropertyChangedEventManager' in 
Assembly 'WindowsBase, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' is not marked as serializable. 

Обычно я бы иметь дело с этим исключением путем добавив [NonSerializable] к событию PropertyChanged, но здесь код автогенерируется, и я не хочу его менять.

Каков наилучший способ решить эту проблему?

+0

который сериализатор вы используете здесь? –

+0

BinaryFormatter.Serialize –

ответ

3

Похоже, что вы используете BinaryFormatter. Однако типы WCF предназначены для сериализации с DataContractSerializer или родственными сериализаторами (, 44). Попробуйте вместо этого использовать DataContractSerializer - ваша проблема должна испариться.

+0

будет ли он работать с обычными типами [Serializeable]? –

+0

@Arsen if "it" = 'DataContractSerializer' - вид, но не очень хорошо. На самом деле, нет ничего «обычного» о '[Serializable]' - BF является лишь одним из многих - это не особый случай/default. –

Смежные вопросы