Динамически устанавливаемый адрес конечной точки в клиенте wcf (с привязкой по протоколу net tcp)

Таким образом, я не слишком знаком с WCF и всеми вещами, которые я гуглил, не помог мне с тем, как достичь того, что мне нужно. Извините, если это глупый вопрос :)

В основном есть серверное приложение со службами, предоставляемыми с помощью WCF (связывание по протоколу net tcp). Я написал новое консольное приложение, и мне нужно вызвать службу. Таким образом, я могу добиться этого, добавив dll для нашего прокси-проекта и добавив кучу файлов конфигурации (таких как WCFClientBindings, WCFClientEndPoints). Если я использую определенную конечную точку, я могу вызвать код следующим образом:

using (var partyProxy = new PartyControllerProxy())
            {
                // execute server method 
                partyProfile = partyProxy.GetLatestPartyProfile(context, parsedParameters.PartyId);
            }

Однако предполагается, что приложение сможет вызывать имя хоста, которое передается в качестве аргумента командной строки.

Итак, пока мое приложение работает с определенной конечной точкой:

<client>
  <endpoint
  name="IPartyControllerEndpoint"
  address="net.tcp://localhost:46000/ServiceInterface/PartyController.svc"
  binding="customBinding" bindingConfiguration="DefaultNetTcpBindingConfiguration"
  contract="CompanyA.Service.Product.Core.Contracts.IPartyController"
  behaviorConfiguration="DefaultEndpointBehavior">
  </endpoint>
</client>

Я должен быть в состоянии обновить имя хоста localhost, чтобы потенциально быть чем-то другим. Надеюсь, что безопасность не сбивает меня с толку :)

Примеры, которые я видел, похоже, создают экземпляр клиента / прокси, передавая "динамический". привязка и адрес, но наш прокси-класс не принимает их. Нет ли способа обновить адрес конечной точки (во время выполнения) перед вызовом «прокси»? учебный класс ? Единственные другие примеры, которые я видел, были связаны с созданием нового ServiceHost, но это не очень подходит для клиента :)

Спасибо!

Edit - Хорошо, вот синтаксис, который, кажется, работает хорошо. Это немного отличается от ответа, который я принял, но такой подход был подходом :)

using (ChannelFactory<IPartyController> factory = new ChannelFactory<IPartyController>("IPartyControllerEndpoint"))
        {
            EndpointAddress address = new EndpointAddress(String.Format("net.tcp://{0}/ServiceInterface/PartyController.svc", parsedParameters.HostName));
            IPartyController channel = factory.CreateChannel(address);

            partyProfile = channel.GetLatestPartyProfile(context, parsedParameters.PartyId);
            ((IClientChannel)channel).Close();
        }

Ответы на вопрос(1)

Ваш ответ на вопрос