3
我正在引用服務中的自動生成的WCF客戶端。單元測試服務和模擬自動生成的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
哦,男孩!我希望這是一種懶惰的方式來做到這一點。我有11個Web服務參考。謝謝@Nkosi – panox