Это потому, что интерфейс является контрактом данных веб-службы, и для контракта данных не имеет смысла реализовывать IDisposable
. Контракт с данными содержит контракты на операции, в которых нет ничего, что можно было бы распорядиться. Это канал, который должен быть удален, и поэтому автоматически сгенерированный прокси-класс (WcfClient) реализует IDisposable
.
Вы можете попробовать это, если будете настаивать на использовании вашего контракта на данные:
IWcfClient client = new WcfClient();
using((IDisposable)client)
{
client.WebMethod();
}
но я действительно не вижу, что не так с:
using(var client = new WcfClient())
{
client.WebMethod();
}