В моем текущем производственном коде и в соответствии с документацией по msdn способ создания клиента такой:
using (WebChannelFactory<IServiceInterface> cf
= new WebChannelFactory<IServiceInterface>("http://service.url"))
{
IServiceInterface client = cf.CreateChannel();
client.CallTheMethod();
}
учитывая, что у меня есть этот интерфейс:
public interface IServiceInterface
{
void CallTheMethod();
}
Однако я заметил, что объектный клиент, созданный WebChannelFactory, также реализует IDisposable. Поэтому я хочу избавиться и от этого объекта. Я не нашел другого пути, кроме:
using (WebChannelFactory<IServiceInterface> cf
= new WebChannelFactory<IServiceInterface>("http://service.url"))
using(IDisposable client = (IDisposable)cf.CreateChannel())
{
((IServiceInterface)client).CallTheMethod();
}
Я считаю это безобразным. Итак:
- Мне действительно нужно избавиться от этого? Я имею в виду, что, может быть, он утилизируется, когда вы утилизируете фабрику (если фабрика сохраняет ссылку на каждый созданный объект, может быть)?
- Если да, у вас есть лучший способ?