当我尝试解析 IOptionsSnapshot 服务时,出现以下异常:
“无法从根提供程序解析范围服务“Microsoft.Extensions.Options.IOptionsSnapshot`1[Test.MyOptions]”。”
如果有人可以告诉我问题,我将测试代码留在下面。
主要的
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System.IO;
class Program
{
static void Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("AppSettings.json", optional: false, reloadOnChange: true)
.AddJsonFile("MyOptions.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
var services = new ServiceCollection();
var provider = services.Configure<MyOptions>(configuration.GetSection(nameof(MyOptions))).BuildServiceProvider(true);
var test = provider.GetRequiredService<IOptionsSnapshot<MyOptions>>();
}
}
Run Code Online (Sandbox Code Playgroud)
我的选项类
public class MyOptions
{
public int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的选项.json
{
"MyOptions": {
"Value": 10
}
}
Run Code Online (Sandbox Code Playgroud) 我读到了如何通过仅绑定实现 INotifyPropertyChanged 或它们是 DependencyObject 对象的属性来避免Windows Presentation Foundation应用程序中的内存泄漏。但是如何让 CLR 收集这些对象呢?
来源信息:
WPF 绑定实际上会导致内存泄漏。经验法则是始终绑定到 DependencyObject 或 INotifyPropertyChanged 对象。如果您不这样做,WPF 将从静态变量创建对绑定源(即 ViewModel)的强引用,从而导致内存泄漏(https://michaelscodingspot.com/ways-to-cause-memory-leaks-在-dotnet/)
有没有办法将System.Text.Json.JsonSerializer.Deserialize与包含私有 setter 属性的对象一起使用,并填充这些属性?(就像Newtonsoft.Json那样)