使用Repository和UnitofWork模式实现的WCF服务中的构造函数错误

时间:2010-09-15 22:30:38

标签: wcf entity-framework-4 repository-pattern

我有一个使用Repository和UnitofWork模式实现的WCF服务。 现在我收到了以下错误:

提供的服务类型无法作为服务加载,因为它没有默认(无参数)构造函数。要解决此问题,请在类型中添加默认构造函数,或将类型的实例传递给主机。

当我使用WIHTOUT这些模式时,它没有抛出任何错误。 救命 ??建议?如何通过此错误?

以下是代码段:

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 个答案:

答案 0 :(得分:1)

如果使用默认服务实例化,则必须提供无参数构造函数。您的设计通过构造函数提供依赖注入。在这种情况下,您必须拥有自己的实例提供程序来调用构造函数并创建服务实例。您可以按服务instance providerbehavior和可选service host创建,但这种方式非常糟糕。更好的方法是使用Inversion of Control容器来解决配置中的依赖关系。在这种情况下,您将只有一个新的实例提供程序,行为和可选的服务主机。

Here你有关于创建通过Unity解决服务的新instnace提供商的非常好的帖子。