如何只动态编译一次类类型?

时间:2014-10-19 04:42:20

标签: c# wcf iis

我正在将客户端应用程序部署到配置为使用两个网络服务器之一的移动便携式计算机。网络服务器相同但具有不同的IP地址,因为每个服务器位于不同的办公室。

首次启动客户端应用程序时,它只需要确定它所在的办公室,以及连接到哪个数据服务器。所以,使用客户端机器的IP地址,我希望这样做 像这样的东西:

 internal TYPE??? dataservice = new ResolveDataService();

  NovaDataServiceClient ResolveDataService()
  {
     if (localip == xxx.xxx.xxx.xxx)
      {
           retrun new DataService.NovaDataServiceClient();
      }
      else
      {
          return new LibraryWebService.NovaDataServiceClient();
      }
  }

此外,由于它只需要完成一次,因此首选静态构造函数。但真正的问题是命名空间“DataService”和“LibraryWebService”被赋予客户端项目的Add Service Reference,所以在上面的代码中

    internal TYPE??? dataservice 

在调用ResolveDataService之前,不知道Type。

这是如何正确完成的?感谢

1 个答案:

答案 0 :(得分:2)

如果这两个服务完全相同并且只是因IP地址而不同,那么正确的做法就是只有一个服务引用并在创建服务时设置端点。在您的情况下,最简单的方法可能是向app.config添加具有不同name属性的第二个端点配置,并在client's constructor中提供该属性。