2010-11-16 63 views
1

我在VB.Net中工作,我试图让一段代码更通用。我如何从代码中调用一个WCF服务,在.net框架中3

实际上,有一个很大的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是编译时的对象或类型“对象”。

对不起,如果我没有提到足够的细节,随时让我知道如果你需要更多,我真的不知道我必须提供什么信息。

编辑:我发现了另一块的位置代码,使用类似的电话,也许它会帮助理解...

同样,在另一个开关case语句,

objMsgHL7Out = _objWsHL7.ProviderDetailsQuery(_objMsgIn) 

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

回答

1

试试这个:

  • 创建的HashMap<string, string>
  • 一个HashMap添加Constantes.NomPRPMIN306010,...关键和"AddProvider" ...作为值。
  • 呼叫ObtenirUrl(hashmap[_strNteraHL7], ...
+0

好主意,我想做类似于你推荐什么东西,不过,我使用了我们的配置文件一个SQLite文件。我想有一种方法可以将常量字符串与服务相关联(很可能,我想将字符串与标识服务的字符串相关联。) – Pacane 2010-11-16 13:40:49

+0

我想我已经想到了一种我可以做的方式我想要什么,在开始时想要什么,以及你的建议,谢谢。 – Pacane 2010-11-16 17:32:46