StructureMap泛型类注册与构造函数
问题描述:
我想注册泛型类及其构造函数。像这样:StructureMap泛型类注册与构造函数
ObjectFactory.Initialize(
action =>
{
action.SelectConstructor<IRepository<>>(() => new Repository<>(LifetimeManager.Current));
});
但我不怎么能这样做?
注意:LifetimeManager.Current是静态操作。如果我不关心构造函数,我可以写这个,action.For(typeof(IRepository<>)).Use(typeof(Repository<>));
但是今天我需要通过DI给Repository类UnitOfWork参数。
谢谢。
答
我认为这会为你工作:
action => action.For<IUnitOfWork>().Use(() => LifetimeManager.Current));
action => action.For(typeof (IRepository<>)).Use(typeof (Repository<>)));
这是提供的信息库构造具有IUnitOfWork的参数。只要确保Repository类的构造函数中的所有参数都已注册到容器中,并且您应该很好。
如果您在Repository类中没有多个构造函数,并且您想选择特定的构造函数,则不需要使用SelectConstructor方法。
检查这个职位..它回答类似的问题.. http://*.com/questions/2824088/passing-constructor-arguments-when-using-structuremap – Chandu 2011-02-28 01:43:40