我有一个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容器相同的程序集中创建类之外,还有什么替代方法?
答案 0 :(得分:0)
使用setter注入。见here
For<IBar>().Use<MyBar>();
Policies.FillAllPropertiesOfType<IBar>();