Establecer dinámicamente la dirección del punto final en el cliente wcf (con enlace net tcp)

Así que no estoy demasiado familiarizado con WCF y todas las cosas que he buscado en Google no me han ayudado a lograr lo que necesito. Lo siento si esta es una pregunta tonta :)

Básicamente hay una aplicación de servidor con servicios expuestos con WCF (enlace tcp de red). He escrito una nueva aplicación de consola y necesito llamar al servicio. Así que puedo lograr esto agregando una dll para el proyecto proxy que tenemos y agregando un montón de archivos de configuración (como WCFClientBindings, WCFClientEndPoints). Si uso un punto final definido, puedo llamar a un código como este:

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

Sin embargo, se supone que la aplicación puede llamar al nombre de host que se pasa como un argumento de línea de comando.

Entonces, mientras mi aplicación funciona con un punto final definido:

<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>

Necesito poder actualizar el nombre de host localhost para que sea potencialmente otra cosa. Espero que la seguridad no me haga tropezar :)

Los ejemplos que he visto parecen crear una instancia del cliente / proxy al pasar el enlace y la dirección "dinámicos", pero nuestra clase de proxy no los acepta. ¿No hay una manera de actualizar la dirección del punto final (en tiempo de ejecución) antes de llamar a la clase "proxy"? Los únicos otros ejemplos que he visto han involucrado la creación de una instancia de un nuevo ServiceHost, pero eso no suena muy apropiado para el cliente :)

¡Gracias!

Editar - OK, aquí está la sintaxis que parece funcionar bien. Es un poco diferente a la respuesta que acepté, pero ese enfoque fue el camino a seguir :)

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();
        }

Respuestas a la pregunta(1)

Su respuesta a la pregunta