StructureMap泛型类注册与构造函数

问题描述:

我想注册泛型类及其构造函数。像这样:StructureMap泛型类注册与构造函数

 ObjectFactory.Initialize(
      action => 
      { 
       action.SelectConstructor<IRepository<>>(() => new Repository<>(LifetimeManager.Current)); 
      }); 

但我不怎么能这样做?

注意:LifetimeManager.Current是静态操作。如果我不关心构造函数,我可以写这个,action.For(typeof(IRepository<>)).Use(typeof(Repository<>));但是今天我需要通过DI给Repository类UnitOfWork参数。

谢谢。

+0

检查这个职位..它回答类似的问题.. http://*.com/questions/2824088/passing-constructor-arguments-when-using-structuremap – Chandu 2011-02-28 01:43:40

我认为这会为你工作:

action => action.For<IUnitOfWork>().Use(() => LifetimeManager.Current)); 
action => action.For(typeof (IRepository<>)).Use(typeof (Repository<>))); 

这是提供的信息库构造具有IUnitOfWork的参数。只要确保Repository类的构造函数中的所有参数都已注册到容器中,并且您应该很好。

如果您在Repository类中没有多个构造函数,并且您想选择特定的构造函数,则不需要使用SelectConstructor方法。