在JSONCore2.0中是否有通过包含接口.NET类映射的JSON文件配置依赖项注入的示例?例如。
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配置的预期格式是什么?
发布于 2018-05-13 18:22:39
替换默认服务容器 内置服务容器旨在满足框架的基本需求,以及构建在其上的大多数消费者应用程序()。但是,开发人员可以将内置容器替换为他们喜欢的容器。
ConfigureServices方法通常返回void,但是如果它的签名更改为返回IServiceProvider,则可以配置和返回不同的容器。有许多IOC容器可用于.NET。
(强调地雷)
参考资料:ASP.NET核中的依赖注入介绍
因此,我建议检查一下,看看是否已经有第三方DI框架提供了这个特性,并且有一个可以与.Net核心集成的扩展。
备注 当使用第三方DI容器时,必须更改
ConfigureServices,使其返回IServiceProvider而不是void。
发布于 2020-02-24 16:56:53
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);
}有关详细信息,请单击这里
https://stackoverflow.com/questions/50319084
复制相似问题