Разоблачить объект из библиотеки классов, используя WCF
-
18-09-2019 - |
Вопрос
Я использую библиотеку классов, которая раскрывает несколько объектов. Эти объекты имеют пару свойств, которые содержат данные, которые мне нужны клиенты. Я хотел бы создать службу WCF, которая возвращает объекты моим клиентам, но я не могу обновить библиотеку классов, чтобы добавить атрибуты данных DataContract и Datamember. Какой самый простой способ разоблачения этих объектов?
Решение
Вы можете использовать DataContractSurrogate.
... Вы можете применить атрибут DataContract к классу человека, но это не всегда возможно. Например, класс человека может быть определен в отдельной сборке, над которой у вас нет контроля.
Учитывая это ограничение, один из способов сериализации класса человека - заменить его другим классом, который отмечен DataContractattribute и копировать необходимые данные в новый класс. Цель состоит в том, чтобы класс человека появился в качестве обработки данных для dataContractSerializer. Обратите внимание, что это один из способов сериализации не датируемых контрактных классов. ...
Другие советы
Если вы не можете установить атрибуты [DataContract] и [Datamember] на свой объект, вам придется найти способ разоблачить их с помощью XMLSerializer.
Вы можете определить службу или операцию по использованию XMLSerializer, указав атрибут [XMLSerializerFormat] либо в вашем контракте на обслуживание, либо в отдельном отделе операции.
Возможно, это помогает?
Марк