Веб-сервисы WCF и конструкторы - PullRequest
0 голосов
/ 04 июля 2011

Я написал пару простых веб-методов (как часть службы WCF), которые используют пару (более сложных) классов в качестве входных / возвращаемых параметров.Каждый веб-метод присваивается [OperationContract], каждый класс данных - атрибутом [DataContract], каждое поле данных в классах - атрибутом [DataMethod]На стороне клиента я могу вызвать эти веб-методы, добавив ссылку на сервис.Все хорошо, но когда я создаю экземпляр некоторых классов данных выше на стороне клиента, их конструкторы не запускаются.Поскольку немного сложнее инициализировать каждый экземпляр, каждый раз я думал, что есть какой-то способ инициализировать экземпляры на стороне клиента их собственными конструкторами.Заранее спасибо!Илан.

1 Ответ

1 голос
/ 04 июля 2011

Методы, представленные в контрактах с данными (включая конструкторы) в вашем сервисе, предназначены только для сервисных приложений. При добавлении ссылки на службу будет воссоздана только структура данных ваших классов контрактов данных, поскольку описание службы не может описать логику, а логика не может быть сериализована.

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

...