Предоставление существующей библиотеки классов службе WCF - PullRequest
1 голос
/ 05 июля 2010

У меня есть библиотека классов со всеми классами для связи с моим сервером. Я создал службу WCF, которая будет размещена на моем существующем сервере как часть другого домена приложения. Поскольку у меня уже есть классы, я подумал, что это может быть использовано в моей службе WCF, чтобы сократить время разработки.

Я успешно разместил свой сервис WCF и работает на моем компьютере разработчика. Проблема на стороне клиента, который добавляет мой веб-сервис. Они могут использовать только базовые классы моей библиотеки.

Как я могу сделать так, чтобы все мои классы помимо базового класса моей библиотеки были доступны на моем веб-сервисе? например вспомогательные классы, дочерние классы, которые унаследованы от моего базового класса, и другие классы, которые используются в моей универсальной коллекции.

Все мои классы одеты в атрибуты Serializable и DataContract.

Кстати, моя библиотека классов была создана 3 года назад, я просто исправил некоторые новые атрибуты, чтобы сделать ее доступной в моем веб-сервисе.

1 Ответ

1 голос
/ 05 июля 2010

Вспомогательные классы, которые не являются частью иерархии классов, являющихся частью контрактов на операции, никогда не будут представлены.Что касается дочерних классов, вы можете использовать раздел <knownType> в web.config, чтобы указать сериализатору, каковы возможные дочерние классы для данного базового типа:

<system.runtime.serialization>
    <dataContractSerializer>
      <declaredTypes>
        <add type="SomeNs.MyBaseType, SomeNs">
          <knownType type="SomeNs.MyChildType1, SomeNs"/>
          <knownType type="SomeNs.MyChildType2, SomeNs"/>
        </add>
        <add type="SomeNs.MyBaseType2, SomeNs">
          <knownType type="SomeNs.MyChildType3, SomeNs"/>
        </add>
      </declaredTypes>
    </dataContractSerializer>
</system.runtime.serialization>

WCF будет смотреть на типы, которые являются частьюиз контрактов операций (методы, отмеченные [OperationContract]), и он автоматически выставит эти классы в метаданных (WSDL), чтобы клиенты могли их видеть.Возможные дочерние классы должны быть указаны явно.

Также вам может пригодиться запись в блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...