Ошибка конструктора в службе WCF, реализованной с использованием шаблонов Repository и UnitofWork - PullRequest
2 голосов
/ 16 сентября 2010

У меня есть служба WCF, которая реализована с использованием шаблонов Repository и UnitofWork.И теперь я получаю следующую ошибку:

Невозможно загрузить предоставленный тип сервиса как сервис, поскольку у него нет конструктора по умолчанию (без параметров).Чтобы устранить проблему, добавьте конструктор по умолчанию к типу или передайте экземпляр типа на хост.

Когда я работал без этих шаблонов, он не выдавал никаких ошибок.ПОМОГИТЕ ??SUGGESTIONS?Как пройти эту ошибку?

Ниже приведен фрагмент кода:

public class Service : IService
{

    private IUnitOfWork _unitOfWork;

    private IMyRepository _myRepository;

    // Dependency Injection enabled constructors

    public Service(IUnitOfWork uow, IMyRepository myRepository)
    {
        _unitOfWork = uow;
        _myRepository = myRepository;
    }

}

1 Ответ

1 голос
/ 16 сентября 2010

Если вы используете экземпляр службы по умолчанию, вы должны предоставить конструктор без параметров. Ваш дизайн обеспечивает внедрение зависимостей через конструктор. В таком случае у вас должен быть свой собственный поставщик экземпляров, чтобы вызывать конструктор и создавать экземпляр службы. Вы можете создать для службы экземпляр поставщика , поведения и, необязательно, хост службы , но это действительно плохой способ. Лучше всего использовать контейнер Inversion of Control, который разрешит ваши зависимости от конфигурации. В этом случае у вас будет только один новый поставщик экземпляра, поведение и, необязательно, хост службы.

Здесь у вас есть очень хороший пост о создании нового провайдера instnace, который разрешает сервисы через Unity.

...