使用StructureMap自动连接,构造函数注入

时间:2009-10-10 14:58:52

标签: structuremap

我是结构图的新手。 :))

我有一个实现IPresenter的类:

public class SoldierPresenter : IPresenter
{
...
public SolierPresenter(ISoldierView soldierView)
{

}
...
}

我打电话的时候:

var presenters = ObjectFactory.GetAllInstances<IPresenter>();

我得到零实例......我错过了什么?!

以下是容器的配置代码:

  Scan(
            scanner =>
                {
                    scanner.AssemblyContainingType(typeof(IShell));
                    scanner.WithDefaultConventions();

                    scanner.TheCallingAssembly();
                    scanner.AddAllTypesOf<IPresenter>();

                    scanner.WithDefaultConventions();
                });

提前致谢, 埃里克。

Container.WhatDoIHave(); 显示以下内容:

IPresenter(DutyManager.Presentation.Framework.IPresenter)DutyManager.Presentation.SoldiersPresenter,DutyManager.Presentation,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null Configured DutyManager.Presentation.SoldiersPresenter,DutyManager.Presentation,Version = 1.0 .0.0,Culture = neutral,PublicKeyToken = null
Scoped as:PerRequest


ISoldiersView(DutyManager.Presentation.ISoldiersView)DutyManager.Presentation.SoldiersView,DutyManager.Presentation,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null DutyManager.Presentation.SoldiersView,DutyManager.Presentation,Version = 1.0.0.0, Culture = neutral,PublicKeyToken = null
Scoped as:PerRequest

1 个答案:

答案 0 :(得分:2)

您的代码示例未提供足够的信息。您是在配置ObjectFactory拥有的容器,还是在创建自己的Container实例? ObjectFactory只能访问自己的Container。

您正在尝试在ObjectFactory上调用GetAllInstances,但是您在Container上调用WhatDoIHave。您使用所包含的“扫描”语句配置哪个容器尚不清楚。

使用您提供的代码(并假设整个使用ObjectFactory),我无法重现您的问题。确保您始终使用相同的容器。

如果这不能解决您的问题,您可以考虑发布到StructureMap mailing list,它将从StructureMap用户那里获得更多关注。