如何在依赖注入期间初始化字典类型

时间:2018-09-19 14:09:46

标签: c# .net .net-core

作为注册服务的一部分,我正在尝试从appsettings.json中读取一堆键值对到字典中:

services.AddScoped<AddressManager>(t =>
{
     const string PhoneBookSection = "PhoneBookSection";
     var phonebook = 
           Configuration.GetSettings<Dictionary<string, string>>($"{PhoneBookSection}:DummyConfiguration");               
     return new AddressManager(phonebook);
});

在创建该对象的过程中出现此错误:

  

由于缺少类型'System.String'的实例,因此无法创建   公共的无参数构造函数。

关于我在做什么错以及如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

我不确定Configuration.GetSettings<T>是什么。我不知道,也没有在.NET Core框架中找到这样的方法。

但是,有一种Bind方法可以完全实现您想要实现的目标:

services.AddScoped<AddressManager>(t =>
{
    const string PhoneBookSection = "PhoneBookSection";
    var phonebook = new Dictionary<string, string>();
    Configuration.Bind(PhoneBookSection, phonebook);
    return new AddressManager(phonebook);
});

您可能需要安装Microsoft.Extensions.Configuration.Binder NuGet软件包:

Install-Package Microsoft.Extensions.Configuration.Binder