Вы, очевидно, не можете привести объект к интерфейсу, который он не реализует.
Но что вы можете сделать (если имеет смысл реализовать все методы для каждого из этих интерфейсов из экземпляра UrlManagementServiceClient
), это обернуть ваш UrlManagementServiceClient
вобъект, который реализует необходимые вам интерфейсы.
Это называется шаблоном декоратора (а не прокси).Обычно прокси «кажется» основным объектом, в то время как в этом случае вы добавляете функциональность, которой нет у вашего клиента.
Другими словами, вам потребуется новый класс:
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
}
Это позволяет повторно использовать реализацию клиента и добавить дополнительные функции поверх него.