作为注册服务的一部分,我正在尝试从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'的实例,因此无法创建 公共的无参数构造函数。
关于我在做什么错以及如何解决此问题的任何想法?
答案 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