Как я могу вызвать службу WCF из кода, в .NET Framework 3 - PullRequest
1 голос
/ 16 ноября 2010

Я работаю в VB.Net и пытаюсь сделать фрагмент кода более общим.

На самом деле, существует большой оператор Select Case, который строит ProxyServer на основе значения, переданного в параметре (строка).

 Select Case _strNteraHL7
        Case Constantes.NomPRPMIN306010
            strUrl = ObtenirUrl("ProviderDetailsQuery", _strVersion, _strEnvir, True, _blnSimulCAIS, _blnSimulPDS, _blnSimulPDSSIIR, _blnSimulPDSInteg)
            objWsHL7 = New wsProviderDetailsQuery.ProviderDetailsQueryClient(objBinding, New EndpointAddress(strUrl))
        Case Constantes.NomPRPMIN301010
            strUrl = ObtenirUrl("AddProvider", _strVersion, _strEnvir, True, _blnSimulCAIS, _blnSimulPDS, _blnSimulPDSSIIR, _blnSimulPDSInteg)
            objWsHL7 = New wsAddProvider.AddProviderClient(objBinding, New EndpointAddress(strUrl))

Объекты типа "wsAddProvider" и "wsProviderDetailsQuery" в предыдущем примере являются ссылками на службы, которые были добавлены через графический интерфейс Visual Studio ...

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

например:

objWsHL7 = новый wcfServicesContainer ("serviceNameHere", paramArray ())

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

objWsHL7 - объект или тип "объект" при компиляции.

Извините, если я не упомянул достаточно подробностей, не стесняйтесь сообщить мне, если вам нужно больше, я действительно не знаю, какую информацию я должен предоставить для этого.

Edit: я заметил еще один фрагмент кода, который использует аналогичные вызовы, может быть, это поможет понять ...

Опять же, в другом операторе переключения,

objMsgHL7Out = _objWsHL7.ProviderDetailsQuery(_objMsgIn)

objMsgHL7Out - это System.ServiceModel.Channels.Message _objMsgIn - это System.ServiceModel.Channels.Message _objWsHL7 - это объект

1 Ответ

1 голос
/ 16 ноября 2010

Попробуйте это:

  • Создать хэш-карту HashMap<string, string>
  • Добавить Constantes.NomPRPMIN306010, ... в качестве ключа и "AddProvider", ... в качестве значения.
  • звонок ObtenirUrl(hashmap[_strNteraHL7], ...
...