Создание справки службы Silverlight - как определить, что вызывает создание прокси-классов - PullRequest
0 голосов
/ 07 декабря 2011

У меня большая структура объектов, которую я хочу разделить между бэкэндом .Net4 и интерфейсом Silverlight 5. Я создал два проекта библиотеки классов соответствующего типа, и моя структура объектов реализована в библиотеке .Net и связана с библиотекой SL. На стороне клиента Silverlight я ссылаюсь на библиотеку классов Silverlight. Когда я генерирую сервисную ссылку, я включил опцию «Повторное использование типов в ссылочных сборках». Однако, когда я генерирую ссылку на сервис, я обнаруживаю, что типы, которые находятся в сборках, на которые ссылаются, все еще генерируются. Это только определенные типы, и, по-видимому, это в основном типы коллекций (приписывается <CollectionDataContract>).

У меня есть главный объект, который имеет много свойств, которые обычно либо List<MyTypeA>, либо в некоторых случаях они MyListTypeB, где MyListTypeB наследуется от List<MyTypeB>. Похоже, что классы, подобные MyListTypeB, вызывают генерацию прокси. Все они приписаны <CollectionDataContract> и имеют конструктор по умолчанию.

Я также обнаружил, что, хотя проект, в который я добавляю ссылку на службу, имеет ссылку на другой проект SL , содержащий сущности, при обновлении службы новая ссылка непосредственно на dll также добавляется в проект. Я не уверен, почему это происходит, или если это вызывает путаницу в генерации прокси службы

Есть ли способ сказать, какие классы / свойства вызывают генерацию сервиса для генерации прокси-классов? Или это метод проб и ошибок, когда необходимо закомментировать атрибуты до тех пор, пока они не будут сгенерированы и отточены в классе задачи?

1 Ответ

0 голосов
/ 07 декабря 2011

Теперь я узнал об использовании файла svcmap и обновлении элементов CollecitonMappings для включения типов моих коллекций, описанных здесь:

http://mostlydevelopers.com/blog/post/2009/12/14/Configure-WCF-Service-ndash3b-Reuse-Collection-Types-Issue.aspx

Кажется немного необычным, что функциональность svcmap настолько недокументирована.

Мне удалось добавить запись в файл svcmap, подобную следующей:

 <CollectionMappings>
  <CollectionMapping TypeName="MyNamespace.MyType" Category="List" />
 </CollectionMappings>

И затем, когда я обновил ссылку на службу, коллекции прокси не создаются.

...