首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过JSON文件配置ServiceCollection

通过JSON文件配置ServiceCollection
EN

Stack Overflow用户
提问于 2018-05-13 18:04:08
回答 2查看 1K关注 0票数 4

在JSONCore2.0中是否有通过包含接口.NET类映射的JSON文件配置依赖项注入的示例?例如。

代码语言:javascript
运行
复制
var someServiceConfigBuilder = new ConfigurationBuilder();
someServiceConfigBuilder.AddJsonFile("someservice.json");
var someServiceConfig = someServiceConfigBuilder.Build();

var services = new ServiceCollection();
services.AddOptions();
services.Configure<SomeServiceOptions>(someServiceConfig);
services
    // TODO this should really come from the JSON config file
    .AddTransient<ISomeService, SomeService>();

因此,与其用调用AddTransient()的方式对映射进行硬编码,不如从JSON文件中获得这些信息。

这有支持吗?如果是,JSON配置的预期格式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-13 18:22:39

替换默认服务容器 内置服务容器旨在满足框架的基本需求,以及构建在其上的大多数消费者应用程序()。但是,开发人员可以将内置容器替换为他们喜欢的容器。ConfigureServices方法通常返回void,但是如果它的签名更改为返回IServiceProvider,则可以配置和返回不同的容器。有许多IOC容器可用于.NET。

(强调地雷)

参考资料:ASP.NET核中的依赖注入介绍

因此,我建议检查一下,看看是否已经有第三方DI框架提供了这个特性,并且有一个可以与.Net核心集成的扩展。

备注 当使用第三方DI容器时,必须更改ConfigureServices,使其返回IServiceProvider而不是void

票数 4
EN

Stack Overflow用户

发布于 2020-02-24 16:56:53

代码语言:javascript
运行
复制
 public static void Injection(IServiceCollection services)

 {

  var jsonServices = JObject.Parse(File.ReadAllText("dependency.json"))["services"];

  var requiredServices = JsonConvert.DeserializeObject < List < Service >> (jsonServices.ToString());

  foreach(var service in requiredServices)

  {

   var serviceType = Type.GetType(service.ServiceType.Trim() + ", " + service.Assembly.Trim());

   var implementationType = Type.GetType(service.ImplementationType.Trim() + ", " + service.Assembly.Trim());

   var serviceLifetime = (ServiceLifetime) Enum.Parse(typeof(ServiceLifetime), service.Lifetime.Trim());

   var serviceDescriptor = new ServiceDescriptor(serviceType: serviceType,

    implementationType: implementationType,

    lifetime: serviceLifetime);

   services.Add(serviceDescriptor);

  }

有关详细信息,请单击这里

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

https://stackoverflow.com/questions/50319084

复制
相关文章

相似问题

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