Пространство имен в DataContract WCF - PullRequest
2 голосов
/ 02 марта 2012

Я работаю над сервисом WCF в VB.Меня спросили, что мои DTO находятся в разных пространствах имен.Вот пример с двумя классами:

Первый класс:

Namespace DTO
  Namespace SaveContext

      <DataContract(Namespace:="MyProject/DTO", Name:="Reply")> _
      Public Class Reply

         'Members and methods of my first class

      End Class

  End Namespace
End Namespace

Второй класс:

Namespace DTO
  Namespace ClearContext

      <DataContract(Namespace:="MyProject/DTO", Name:="Reply")> _
      Public Class Reply

         'Members and methods of my second class

      End Class

  End Namespace
End Namespace

Когда я прихожу, чтобы создать объект, все в порядке.Вот пример:

Dim saveReply As New DTO.SaveContext.Reply
Dim clearReply As New DTO.ClearContext.Reply

Но когда я прихожу сделать тестовый проект для тестирования моего сервиса, никакое пространство имен не появляется, и мои два класса одинаковы.Intellisence перешел к моему первому классу с именем Reply, а ко второму классу с именем Reply1, в то время как я хотел иметь ту же иерархию с моими классами.Вот и мне интересно, можно ли это сделать?Я с нетерпением жду ваших ответов.Заранее благодарю за внимание.

1 Ответ

1 голос
/ 02 марта 2012

WCF автоматически разрешает для вас класс "конфликт имен". Вы определяете два отдельных класса C # в одном и том же пространстве имен XML, поэтому генератор WCF WSDL правильно отмечает их как отдельные схемы XML. Поведение, которое вы видите, таково, как Microsoft любит говорить «по замыслу». Возможно, вам действительно нужно использовать наследование и KnownTypes для вашего сценария.

...