我正在引用一个自动生成的WCF客户端在服务中。
//Autogenerated Service client
public partial class ServiceClient :
System.ServiceModel.ClientBase<IService>, IService
{
//...
}
//Autogenerated Interface Client
public interface IService {
//...
}
以以下方式:
public MyService{
public IExternalWsClientFactory ExternalWsClientFactory {get; set; }
public void MyMethod(){
using (var wsCliente = ExternalWsClientFactory.ServiceClient())
{
//...
}
}
}
public class ExternalWsClientFactory : IExternalWsClientFactory
{
public ServiceClient ServiceClient()
{
var wsClient = new ServiceClient();
return wsClient;
}
}
我引用这个实现是因为我想使用“using”语句在代码块结束时释放资源。而且,因为“IDisposable”在“ClientBase”下,并且接口不是部分类。
我的问题是我想模拟“ServiceClient”(我已经模拟了外部“WsClientFactory”),但由于我使用的实现,我很难做到这一点。
注意: 实现中自动生成的方法“ServiceClient”不是“virtual”的。
IDisposable
扩展它的自定义接口。将部分类与您的自定义接口扩展,现在您应该能够使用using
语句来使用您扩展的接口。 - Nkosi