2014-10-06 99 views
1

我想如果我做这样的注册一些开放仿制药城堡温莎注册开仿制药

它的工作原理

Component 
    .For(typeof(IDtoFactory<>)) 
    .ImplementedBy(typeof(DtoFactoryBase<>)) 
    .LifestyleSingleton() 

但是,如果我尝试这样的注册失败

Classes 
    .FromThisAssembly() 
    .BasedOn(typeof(IDtoFactory<>)) 
    .WithServiceAllInterfaces() 
    .LifestyleSingleton() 

我真的不介意有一个抽象基类,使这项工作,但它是一个有点痛但是我很乐意与所有的工厂只是实现该接口。

我得到像下面这样

Service 'MyProj.Factories.IDtoFactory`1 
[[MyProject.Models.MemberDto, 
    MyProject, 
    Version=2.0.0.1, 
    Culture=neutral, 
    PublicKeyToken=null]]' which was not registered. 

错误我使用的是最新版本的温莎城堡的〜3.3

我做什么毛病我Classes注册一个开放的通用?


所以这是非常令人沮丧

我去打造it not working here一个例子,它的工作第一次,没有任何问题。我得看看我在工作中的执行情况,因为显然存在一些差异。

+0

你可能包括未能解决一个工作的例子吗? – samy 2014-10-07 07:07:45

+0

@samy - 做,我只是想通了几分钟前 - 我的其他登记数量远过于笼统和搞砸了我以前的注册 – Neil 2014-10-07 10:59:00

+0

好吧,我想我们应该关闭此为“不reproductible”然后。接得好! :D – samy 2014-10-07 11:03:23

回答

0

我在这里找到了我的问题。在我的生产环境中,我在不同的安装程序中使用了以下内容:

Classes 
    .FromThisAssembly() 
    .Where(type => 
     type.Name.EndsWith("Wrapper") || 
     type.Name.EndsWith("Provider") || 
     type.Name.EndsWith("Factory") || 
     type.Name.EndsWith("Reader") || 
     type.Name.EndsWith("Writer") || 
     type.Name.EndsWith("Destroyer") || 
     type.Name.EndsWith("Helper") 
    ) 
    .WithService 
    .DefaultInterfaces() 
    .Configure(c => c.LifeStyle.Is(scope)) 

这是搞乱了我的其他安装程序。一旦我删除,并与东西取代了登记的更明确的一切都开始在这里工作正常

github

+0

我无法在GitHub上找到您所做的更改。 – 2014-10-07 16:43:45

+0

我会作为一个下降的测试以及显示问题 – Neil 2014-10-07 16:49:04

0

是否有任何机会的错误是不IDtoFactory本身的注册,但它和你的Dto`s之间的联系?你能粘贴更多的代码吗?为了查看实际发生的情况,从属性中暴露您的容器(为了测试),并查看组件注册。您将清楚地看到是否有任何错误配置的组件 - 容器本身就有这样的属性。