Obviamente, no puede transmitir un objeto a una interfaz que no implementa.
Pero, lo que puede hacer (si tiene sentido para poner en práctica todos los métodos para cada una de las interfaces de cada una instancia UrlManagementServiceClient
), es envoltura su UrlManagementServiceClient
en un objeto que implementa las interfaces necesarias.
Esto se llama Decorator pattern (en lugar de proxy). Por lo general, un "proxy" parece ser el objeto subyacente, mientras que en este caso está agregando funcionalidades que su cliente no tiene.
En otras palabras, se necesitaría una nueva clase:
public class UrlManagementClientProxy : IUrlManagementProxy
{
// we need a reference to the underlying client
private readonly UrlManagementServiceClient _client;
// underlying client is passed to the proxy in constructor
public UrlManagementClientProxy(UrlManagementServiceClient client)
{
_client = client;
}
#region IUrlManagementProxy methods
// you implementation goes here. if the underlying client
// already implements a certain method, then you just need
// to pass the call
// for example, client already implements methods
// from the IUrlManagementService interface, so use them
public string GetUrl() // made up
{
return _client.GetUrl();
}
#endregion
}
Esto permite volver a utilizar la aplicación de cliente, y añadir funcionalidad adicional en la parte superior de la misma.
UrlManagementServiceClient es un cliente WCF generado automáticamente. Me gustaría evitar ediciones manuales en el archivo en caso de que sea necesario volver a generarlo. – RandomEngy
@RandomEngy, puede agregar una definición de clase parcial con su propia interfaz en un archivo separado, consulte la edición de mi respuesta. –
Agradable. Limpio y simple. – RandomEngy