【问题标题】:StructureMap and classes that cannot accept constructor argumentsStructureMap 和不能接受构造函数参数的类
【发布时间】:2015-07-20 11:30:18
【问题描述】:

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

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

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

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

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

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

如果没有,除了在与 IoC 容器相同的程序集中创建类之外,我还有什么选择?

【问题讨论】:

    标签: asp.net webforms content-management-system inversion-of-control structuremap


    【解决方案1】:

    使用 setter 注入。见here

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 2016-09-03
      相关资源
      最近更新 更多