如何解决如何设置服务以在ASP.NET Core中接收某些选项?
我正在全力以赴设置自己的服务,以从Startup.cs
注入ASP.NET Core 3.1+项目。
到目前为止,我已经创建了一个接口和一个类:
public interface IMyClass
{
public string SomeString { get; set; }
}
public class MyClass : IMyClass
{
public string SomeString { get; set; }
}
我在启动时使用以下方法添加了服务:
services.AddScoped<Services.IMyClass,Services.MyClass>();
这可以正常工作,除了我希望该类具有可以根据当前配置返回的各种字符串,而且我不知道如何从appsettings.json
传递那些变量来填充SomeString
,因此我可以然后从控制器中get
开始使用它。
我正在尝试:
services.AddScoped<Services.IMyClass,Services.MyClass>(
Configuration.GetValue<string>("SomeAppSettingKey");
要从appsettings中提取字符串,但不知道如何使用该字符串填充类中的构造函数。我是否需要在options
中添加某种类型的MyClass
类作为属性?
关于如何添加这些配置设置有很多提示,但是我只是缺少一些信息,例如
services.AddTransient<IMyClass,MyClass>();
services.Configure<MyClass>(Configuration);
对我来说,具有语法意义,但我仍然不确定如何通过在此处传递MyClass
来填充Configuration
中的字符串。
解决方法
创建模型以存储从配置中提取的设置
public class MyClassOptions {
public string SomeAppSettingKey { get; set; }
}
(请注意匹配的名称)
在启动时配置
services.Configure<MyClassOptions>(Configuration);
(假设密钥位于设置文件的根目录中)
更新目标类以注入配置的选项
public class MyClass : IMyClass {
public MyClass (IOptions<MyClassOptions> options) {
SomeString = options.Value.SomeAppSettingKey;
}
public string SomeString { get; set; }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。