Создание WCF DataContracts динамически из кода - PullRequest
3 голосов
/ 11 февраля 2010

Учитывая тот факт, что у меня полностью динамическая объектная модель, то есть у меня нет конкретных классов, определенных где-либо в коде, но я все еще хочу иметь возможность создавать WCF DataContracts для них, чтобы я мог использовать их в операциях. Как мне этого добиться?

Мой конкретный класс "Entity" реализует ICustomTypeDescriptor, который используется для представления различных свойств внешнему миру, но мой эксперимент с WCF предполагает, что WCF не заботится о ICustomTypeDescriptor. Это правильно или я что-то пропустил?

Возможно ли это? Не может быть так, что единственный способ создать DataContract - это иметь конкретный класс с жестким кодом, не так ли?

Ответы [ 3 ]

0 голосов
/ 10 января 2012

Вы можете попробовать System.Reflection.Emit.

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

Эта устаревшая, но все еще очень релевантная ссылка должна направить вас в правильном направлении. http://drdobbs.com/184416570

0 голосов
/ 05 февраля 2014

Вещи развиваются :-) Благодаря превосходной серии блогов от Alex D James, это очень легко реализовать.

0 голосов
/ 11 февраля 2010

вы можете использовать нетипизированный сервис и сообщение по контракту IIRC http://geekswithblogs.net/claeyskurt/archive/2008/09/24/125430.aspx

...