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

本文关键字:一次 类型 动态 编译 | 更新日期: 2023-09-27 18:26:58

我正在将客户端应用程序部署到配置为使用两个网络服务器之一的移动笔记本电脑上。网络服务器是相同的,但具有不同的IP地址,因为每个服务器都位于不同的办公室。

当客户端应用程序第一次启动时,它只需要确定一次它在哪个办公室,从而连接到哪个数据服务像这样的东西:

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

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

    internal TYPE??? dataservice 

在调用ResolveDataService之前,类型是未知的。

如何正确地完成此操作?感谢

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

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