autofac可以部分解决吗?

Kug*_*gel 6 ioc-container autofac partial resolve

我似乎需要这么多.

假设我有一个带有构造函数的类,它带有几个参数.其中一些可以通过注册组件来解决.但其余的是在运行时创建的实例(例如,从数据库中获取实体).

Autofac能以一种很好的方式处理这些情况吗?或者我的设计是次优的?

为了澄清,我有类这样的构造函数的类:

public MyClass(IService1 service1, IService2 service2, Data1 data1, Data2 data2)
{
//...
}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

container.Resolve<MyClass>(data1, data2);

ben*_*ruk 10

您可以通过在Autofac容器中注册工厂方法来优雅地处理此问题.您解析工厂方法,然后使用它来创建具有运行时依赖项的实例.您可以通过注册和解析委托或自定义工厂类型来自行完成此操作.但是,Autofac明确支持委托工厂.

没有足够的信息来评论您的设计.我会把它留给你:)


Ste*_*ven 4

我想说你的设计不是最优的。

你似乎把事情混在一起了。依赖注入(使用容器)主要用于将服务组件注入到其他组件中。不要注入实体之类的东西,因为容器不负责管理它们的生命周期。相反,注入一个可以为您管理实体的服务,例如存储库。虽然是讨论的主题,但我不会注入工作单元,而是注入一个用于创建工作单元的工厂。通过这种方式,您的应用程序可以显式管理工作单元的生命周期。