2011-02-28 49 views
0

我有一个接口IRepo <Entity>。我有一个通用的实现Repo<Entity>。 现在我只是做以下温莎依赖注入与泛型的问题

Container.Register(AllTypes.FromAssemblyNamed( “的AssemblyName”)。挑() .WithService.DefaultInterface() .Configure(C => c.LifeStyle.PerWebRequest))

并用各自的实现注册所有的接口。这似乎工作正常。

我的问题出现时,我试图更具体。 如果我尝试与人是使用

Container.Register(Component.For(IRepo<Person>).ImplementedBy(UserRepo).LifeStyle.PerWebRequest)一类子类实体与<UserRepo>映射IRepo<Person>;

它似乎没有工作。

我这样做的顺序是我注册这个特定的实现,然后加载并注册所有的接口到类型从程序集。

它似乎没有工作。

回答

0

DefaultInterface不支持泛型。您可以使用AllInterfaces来代替或通过Select方法

+0

定制策略我使用Container.Register(typeof(IRepo ),typeof(UserRepositry));然后做Container.Register(AllTypes.FromAssemblyNamed(“assemblyname”)。Pick().WithService.AllInterfaces().Configure(c => c.LifeStyle.PerWebRequest))。仍然没有运气:( – 2011-02-28 13:11:14

+0

好吧,我终于解决了它,我忘了提到在实现的子类的函数覆盖现在温莎地图根据泛型类型。 – 2011-02-28 13:37:58