StructureMap构造函数注入命名映射

时间:2011-06-08 18:12:16

标签: asp.net-mvc-3 structuremap

在我的对象工厂初始化中,我有类似的东西:

ObjectFactory.Initialize(factory=>
{
    factory.For<User>().Add((IContext context) => 
        (User)Session["Current"]).Named("CurrentUser");
    factory.For<User>().Add((IContext context) => 
        new User()).Named("NewUser");
});

然后在我的控制器中,我希望能够做到这样的事情:

public MyController(User CurrentUser){...}

public MyOthercontroller(User NewUser){...}

构造函数定义的某些方面告诉StructureMap使用哪个命名实例。我一直在四处寻找,看看我是否能以某种方式从IContext中获取参数的名称(似乎不可能),或者使用参数的名称作为实例的名称(似乎不是是可能的。

this问题似乎描述了一种通过在初始化对象工厂时为每个控制器设置映射来实现此目的的方法。我更喜欢一些面向会议的东西,而不是必须明确配置它。

这样的事情可能吗?

1 个答案:

答案 0 :(得分:2)

使用StructureMap没有好办法,但我认为你可能不应该使用StructureMap。 MyOtherController应该只创建User实例(如果涉及更多,则委托给IUserSource。)