我有一个使用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;
}
}
答案 0 :(得分:1)
如果使用默认服务实例化,则必须提供无参数构造函数。您的设计通过构造函数提供依赖注入。在这种情况下,您必须拥有自己的实例提供程序来调用构造函数并创建服务实例。您可以按服务instance provider,behavior和可选service host创建,但这种方式非常糟糕。更好的方法是使用Inversion of Control容器来解决配置中的依赖关系。在这种情况下,您将只有一个新的实例提供程序,行为和可选的服务主机。
Here你有关于创建通过Unity解决服务的新instnace提供商的非常好的帖子。