是否可以使用新的JSON配置来设置可配置的DI?
也就是说,我有两个实现相同接口的类,我是否可以使用JSON配置来指定要注入哪个类。
例如:给定两个类
public class RealService: IService {...}
public class FakeService: IService {...}和appsettings.json
"ServiceImplementation": "FakeService"在Startup.cs中
void ConfigureServices(IServiceCollection services){
var serviceNameToInject = Configuration["ServiceImplementation"];
IService serviceToInject = Type.GetType(serviceNameToInject )
service.AddTransient<IService, serviceToInject >
....我想像这样的东西可以工作,但感觉不太好,那么是否有更好的方法来使用新的ASP.NET Core框架来实现Json可配置的DI呢?
提前谢谢你,迈克尔McD。
发布于 2016-02-25 21:20:23
而out of Service容器不支持JSON/XML配置。ASP.net核心允许您将默认容器替换为您选择的IOC容器:其中一些容器支持JSON和,如Autofac。
您可以在这里阅读有关Autofac的JSON和XML配置的更多信息:http://docs.autofac.org/en/latest/configuration/xml.html#configuring-with-microsoft-configuration
以及如何在Asp.net内核中配置Autofac:https://docs.asp.net/en/latest/fundamentals/dependency-injection.html?highlight=addtransient#replacing-the-default-services-container
发布于 2016-02-25 20:49:45
还没有开箱即用的支持。
在appSettings.json中添加部分时,您可以使用反射来自己完成这项工作。但是,请注意,您的代码可能无法在.NET原生下编译。
你在那一刻可能会问自己的另一个问题是..。您什么时候开始交换实现。您是否同时重新部署整个应用程序?如果是,为什么不在代码中使用它并获得静态输入的好处?
在这一点上,这是一个架构的考虑和积极和消极必须加权。
https://stackoverflow.com/questions/35631545
复制相似问题