Я ссылаюсь на автогенерированный WCF-клиент в службе.Единичный тест Сервис и макет Autogenerated WCF Client proxy
//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 веб-сервисов Referencia. Спасибо @Nkosi – panox