#c# #wcf
#c# #wcf
Вопрос:
У меня есть служба WCF, размещенная в IIS. Цель состоит в том, чтобы клиенты выполняли вызов и получали пользовательский класс, который не определен как класс WCF и определен в другом проекте / dll. Как я мог это сделать?
Ответ №1:
Вам нужно украсить этот пользовательский класс [DataContract]
атрибутом, а также все его общедоступные свойства [DataMember]
атрибутом.
Вам также нужно, чтобы и клиент, и сервер включали этот проект / dll.
Комментарии:
1. Предположим, у меня есть родительский класс, скажем, «A», который объявлен как [DataContract] . теперь у меня есть другой дочерний класс, скажем, «B», унаследованный от «A», и он не объявлен в [DataContract] . Теперь я использую dll класса «B» в другом классе WCF в качестве возвращаемого типа функции. Будет ли это работать? Если нет, то что мне нужно делать?
2. Нет, этого не будет. Вам также нужно явно украсить B с помощью [DataContract] . В качестве альтернативы вы можете изменить тип возвращаемого значения вашей функции на A и по-прежнему возвращать объект типа B (если это работает для вас).
3. Мой возвращаемый тип — «A». Таким образом, [DataCotract] не является наследуемой вещью. Есть ли какой-либо другой способ справиться с этим?
4. Что вы имеете в виду под «другим», чего вы хотите достичь, в чем недостаток этого метода в вашем случае…
5. У нас есть приложение для Windows. Для которого требуется ссылка на класс. но во время выполнения в соответствии с параметром класс WCF решит, какая ссылка на класс должна быть возвращена. эти классы являются простыми классами, не использующими [DataContract] . теперь, как этого добиться? без изменения простых классов, поскольку они не могут быть изменены сейчас.