我是结构图的新手。 :))
我有一个实现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
答案 0 :(得分:2)
您的代码示例未提供足够的信息。您是在配置ObjectFactory拥有的容器,还是在创建自己的Container实例? ObjectFactory只能访问自己的Container。
您正在尝试在ObjectFactory上调用GetAllInstances,但是您在Container上调用WhatDoIHave。您使用所包含的“扫描”语句配置哪个容器尚不清楚。
使用您提供的代码(并假设整个使用ObjectFactory),我无法重现您的问题。确保您始终使用相同的容器。
如果这不能解决您的问题,您可以考虑发布到StructureMap mailing list,它将从StructureMap用户那里获得更多关注。