Vous ne pouvez évidemment pas convertir un objet en une interface qu'il n'implémente pas.
Mais, ce que vous pouvez faire (s'il est logique de mettre en œuvre toutes les méthodes pour chacune de ces interfaces sur un UrlManagementServiceClient
exemple), est à wrap votre UrlManagementServiceClient
dans un objet qui implémente les interfaces dont vous avez besoin.
Ceci est appelé le Decorator pattern (plutôt que le proxy). Un proxy "semble" être l'objet sous-jacent, alors que dans ce cas, vous ajoutez des fonctionnalités que votre client n'a pas.
En d'autres termes, vous auriez besoin d'une nouvelle classe:
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
}
Cela vous permet de réutiliser la mise en œuvre du client, et d'ajouter des fonctionnalités supplémentaires au-dessus de celui-ci.
UrlManagementServiceClient est un client WCF généré automatiquement. J'aimerais éviter les modifications manuelles dans le fichier au cas où il devrait être re-généré. – RandomEngy
@RandomEngy, Vous pouvez ajouter une définition de classe partielle avec votre propre interface dans un fichier séparé, voir la modification de ma réponse. –
Nice. Propre et simple. – RandomEngy