有两个项目的解决方案,我遇到了DI问题。 该解决方案由一个类库和一个WebApi2应用程序(它使用类库并公开api)组成。类库中的依赖注入
我在类库中定义了一个Autofac.module,它在项目中设置了所有的DI。
在WebApi2项目中,我创建了DI容器(使用Autofac.WebApi2)并从类库中加载模块。现在,当WepApi2项目中的api控制器请求类库中的服务时,它们会创建所有依赖项,这一切都很好!
问题是,我现在在类库中需要从一个字符串(最终来自数据库)实例化一些类,据我所知,通过使用反射来做到这一点的唯一方法,所以我做像这样:
var ruleType = Type.GetType(rule.RuleImplementation.Implementation);
var rule = (IRule)Activator.CreateInstance(ruleType,param1,param2);
的问题是,实现的iRule接口的类也有这需要得到解决的依赖,这是什么让我敲我的我的键盘了,而在现在。
是否有可能以某种方式使用反射和autoFac一起实例化对象?我仍然需要能够将参数传递给对象。
...或者有没有办法以某种方式访问容器(它是在webApi2程序集中创建的)并使用它来解决它?我想这应该是某种服务模式,我认为这是一种反模式。
我该如何继续?所有的输入是非常赞赏。
我喜欢这个解决方案。据我所见,唯一的缺点是我必须将所有规则注入到服务中,而不管是否需要,因为我首先知道在运行时查询数据库。 – iCediCe