3
我有一些接口的所有接口:城堡温莎 - 注册与工厂方法
IFirstProvider
ISecondProvider
IThirdProvider
- 等。
我想注册所有这些接口,以便他们使用工厂方法来获取实例:
container.Register
(
AllTypes
.FromThisAssembly()
.Where(t => t.IsInterface && t.Name.EndsWith("Provider"))
.Configure(c => c.UsingFactoryMethod(f => f.Resolve<DictionaryAdapterFactory>().GetAdapter<object>(c.ServiceType, session))
);
但这似乎不起作用。相反,我必须使用for
循环注册所有这些接口:
List<Type> providers = new List<Type>
(
Assembly
.GetExecutingAssembly()
.GetTypes()
.Where(x => x.IsInterface && x.Name.EndsWith("Provider"))
);
foreach (Type provider in providers)
{
Type temp = provider;
container.Register
(
Component
.For(temp)
.UsingFactoryMethod(f => f.Resolve<DictionaryAdapterFactory>().GetAdapter<object>(temp, session))
);
}
有没有更好的方式来注册,除了使用for
环路这些接口?
那么,这是不幸的。 – 2012-12-06 13:55:13
@ tom.dietrich查看更新后的答案 – 2012-12-06 20:28:23
好吧,那真是太棒了,除了现在我必须去改变一堆我改变的东西。 :) – 2012-12-13 23:11:48