1

我在 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的GUI添加的服务引用...

我想知道的基本上是,如果我可以从包含服务引用的某个池中调用此构造函数,就像我想在控件容器中调用控件时一样...

例如:

objWsHL7 = 新 wcfServicesContainer("serviceNameHere", paramArray())

或类似的东西,所以我可以移除所有那些重复同样事情 30 次的大开关盒。

objWsHL7 在编译时是一个对象或类型“对象”。

抱歉,如果我没有提到足够的细节,如果您需要更多信息,请随时告诉我,我真的不知道我必须为此提供什么信息。

编辑:我在这里发现了另一段使用类似调用的代码,也许它会帮助理解......

同样,在另一个 switch case 语句中,

objMsgHL7Out = _objWsHL7.ProviderDetailsQuery(_objMsgIn)

objMsgHL7Out 是 System.ServiceModel.Channels.Message _objMsgIn 是 System.ServiceModel.Channels.Message _objWsHL7 是对象

4

1 回答 1

1

试试这个:

  • 创建一个hashmapHashMap<string, string>
  • 添加Constantes.NomPRPMIN306010, ... 作为键和"AddProvider", ... 作为值。
  • 称呼ObtenirUrl(hashmap[_strNteraHL7], ...
于 2010-11-16T13:33:30.060 回答