首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Json配置配置DI

使用Json配置配置DI
EN

Stack Overflow用户
提问于 2016-02-25 15:29:28
回答 2查看 677关注 0票数 0

是否可以使用新的JSON配置来设置可配置的DI?

也就是说,我有两个实现相同接口的类,我是否可以使用JSON配置来指定要注入哪个类。

例如:给定两个类

代码语言:javascript
复制
public class RealService: IService {...}
public class FakeService: IService {...}

appsettings.json

代码语言:javascript
复制
"ServiceImplementation": "FakeService"

Startup.cs

代码语言:javascript
复制
void ConfigureServices(IServiceCollection services){
     var serviceNameToInject = Configuration["ServiceImplementation"];
     IService serviceToInject = Type.GetType(serviceNameToInject )
     service.AddTransient<IService, serviceToInject >
     ....

我想像这样的东西可以工作,但感觉不太好,那么是否有更好的方法来使用新的ASP.NET Core框架来实现Json可配置的DI呢?

提前谢谢你,迈克尔McD。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2016-02-25 20:49:45

还没有开箱即用的支持。

appSettings.json中添加部分时,您可以使用反射来自己完成这项工作。但是,请注意,您的代码可能无法在.NET原生下编译。

你在那一刻可能会问自己的另一个问题是..。您什么时候开始交换实现。您是否同时重新部署整个应用程序?如果是,为什么不在代码中使用它并获得静态输入的好处?

在这一点上,这是一个架构的考虑和积极和消极必须加权。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35631545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档