2014-10-19 2 views
0

Я развертываю клиентское приложение на мобильный ноутбук, который настроен на использование одного из двух сетевых серверов. Сетевые серверы идентичны, но с разными IP-адресами, поскольку каждый из них находится в другом офисе.Как скомпилировать тип класса динамически только один раз?

Когда клиентское приложение сначала запускается, ему необходимо определить только один раз, в каком офисе он находится, и, следовательно, какой dataservice для подключения. Таким образом, используя 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 называется.

Как это делается правильно? Спасибо

ответ

2

Если эти две службы точно такие же и просто отличаются по IP-адресу, то нужно иметь только одну служебную ссылку и установить конечную точку при создании службы. Самый простой способ в вашем случае, вероятно, состоит в том, чтобы добавить вторую конфигурацию конечных точек с другим атрибутом name в app.config и предоставить его в client's constructor.

+0

Как вы можете указать конечную точку в конструкторе клиента? –

+0

@AlanWayne - клиент имеет конструктор, который берет строку с именем конфигурации конечной точки. – shf301

Смежные вопросы