【问题标题】:AutoWiring with StructureMap, Constructor Injection使用 StructureMap 进行自动装配,构造函数注入
【发布时间】:2009-10-10 14:58:52
【问题描述】:

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

我有一个实现 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 配置 DutyManager.Presentation.SoldiersPresenter, DutyManager.Presentation, Version=1.0 .0.0,文化=中立,PublicKeyToken=null
范围为: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,文化=中立,PublicKeyToken=null
范围为:PerRequest

【问题讨论】:

    标签: structuremap


    【解决方案1】:

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

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

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

    如果这不能解决您的问题,您可以考虑发帖到StructureMap mailing list,这样会得到 StructureMap 用户的更多关注。

    【讨论】:

    • Joshua 是对的,没有足够的信息来诊断问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多