不能接受构造函数参数的 StructureMap 和 类

StructureMap and classes that cannot accept constructor arguments

我有一个 ASP.NET Web 应用程序(不是 MVC),它实际上是一个 CMS 应用程序。我正在尝试设置 StructureMap IoC 框架,它运行良好,但我现在遇到了障碍。

据我所知,StructureMap 强制执行一种模式,其中所有依赖项都在核心应用程序程序集中注册,因此底层程序集本身并不依赖于 StructureMap。

所以,假设我的应用程序是 My.App,它引用了另一个程序集 My.Logic。我的依赖项都注册在 My.App 中的一个 Container 中。这意味着 My.Logic 中的 class 可以使用这样的构造函数获取注入的依赖项:

public class Foo
{
  private readonly IBar bar;
  public Foo(IBar bar)
  {
    this.bar = bar;
  }
}

但现在我有一个案例,我在My.Logic中的class是一个必须在CMS中注册的类型,这要求它有一个空的构造函数。

所以问题是,如果我不能使用构造函数参数注入,并且 My.Logic 不依赖于 My.App 所以我无法访问 IoC 容器,是否可以使用 StructureMap 来处理这种情况?

如果不是,除了在与 IoC 容器相同的程序集中创建 class,我还有什么选择?

使用setter注入。参见 here

For<IBar>().Use<MyBar>();

Policies.FillAllPropertiesOfType<IBar>();