我需要在应用程序中启用后期绑定,并且我希望有一个选项来使用 JSON 配置文件显式配置服务。
我有一个接口IDependency
和两个类DependencyOne
,DependencyTwo
它们都实现了接口。我还有一个SomeService
具有以下签名的构造函数的类:
public SomeService(IDependency dependency1, IDependency dependency2)
我想注入DependencyOne
fordependency1
和DependencyTwo
for dependency2
。
如何在不使用代码中的任何属性的情况下纯粹在 JSON 配置中进行配置?有可能吗?
需要无属性要求,因为后期绑定程序集不应该依赖于 AutoFac。
提前致谢。
更新:解决方案
Travis 在下面的回答包含指向常见问题解答的链接,这使我找到了可接受的解决方案。使用“标记”接口,例如IDependencyOne : IDependency
and IDependencyTwo : IDependency
,然后SomeService(IDependencyOne dependency1, IDependencyTwo dependency2)
。我不太喜欢的事情是,现在一个通用的装饰器IDependency
需要实现所有标记,比如LoggingDecorator : IDependencyOne, IDependencyTwo
我想在 中使用它SomeService
,但只要标记保持为空,这不是一个大问题。这样我就不必在后期绑定的程序集中强制依赖 Autofac 的 dll,同时仍然在 JSON 文件中配置 DI。