当依赖注入IOption时,带Prism和DryIOC的WPF失败<&燃气轮机;.Net Core 3.1中的设置

当依赖注入IOption时,带Prism和DryIOC的WPF失败<&燃气轮机;.Net Core 3.1中的设置,wpf,.net-core,configuration,prism,Wpf,.net Core,Configuration,Prism,我正在将基于Prism和DryIOC的WPF迁移到.NETCore3.1。我发现当涉及到.net核心配置功能时,DryIOC无法处理依赖项解析。我尝试过注入IOption、IConfiguration等,如果不抛出异常,使用.Net核心配置将无法解决任何问题 我认为DryIOC可能还不能完全兼容MicrosoftDI,但我已经制作了一些沙盒尝试,表明DryIOC确实可以使用.NETCore与web项目一起工作。我还证明了在不使用Prism和DryIOC的情况下,我可以让WPF项目正常工作。我有一

我正在将基于Prism和DryIOC的WPF迁移到.NETCore3.1。我发现当涉及到.net核心配置功能时,DryIOC无法处理依赖项解析。我尝试过注入IOption、IConfiguration等,如果不抛出异常,使用.Net核心配置将无法解决任何问题

我认为DryIOC可能还不能完全兼容MicrosoftDI,但我已经制作了一些沙盒尝试,表明DryIOC确实可以使用.NETCore与web项目一起工作。我还证明了在不使用Prism和DryIOC的情况下,我可以让WPF项目正常工作。我有一个示例应用程序,它显示了我遇到的问题

该示例解析类对象,并尝试将文件appsettings.json中的配置节解析到MainWindowViewModel中。我的类对象解析得很好,但在尝试使用此代码解析IOption时会崩溃

public MainWindowViewModel(
    IUser user
    // Comment out the next line to avoid the DI exception
    , IOptions<AppSettings> settings
)
{
    _user = user;

    // Comment out the next line to avoid the DI exception
    _settings = settings;
}
public主窗口视图模型(
IUser用户
//注释掉下一行以避免DI异常
,IOptions

我得到以下例外

无法解析WpfPrismCore.ViewModels.MainWindowViewModel IsResolutionCall 从没有范围的容器 使用具有{AutoConcreteTypeResolution}的规则 with MAKE={FactoryMethod=ConstructorWithResolvableArguments} 未找到任何服务注册 在0个规则中未找到动态注册。DynamicServiceProviders 在规则1中未找到任何内容。未知服务解析程序

在D:\Dev\DryIoc\src\DryIoc\Container.cs中的DryIoc.Throw.It(Int32错误,对象arg0,对象arg1,对象arg2,对象arg3):第10684行 在D:\Dev\DryIoc\src\DryIoc\Container.cs中的DryIoc.Container.TryThrowUnableToResolve(请求请求)处:第939行 位于D:\Dev\DryIoc\src\DryIoc\Container.cs中的DryIoc.Container.DryIoc.IContainer.ResolveFactory(请求请求):第918行 在D:\Dev\DryIoc\src\DryIoc\Container.cs中的DryIoc.Container.ResolveAndCacheFactoryDelegate(类型serviceType,如果未解析,如果未解析)处:第256行 在D:\Dev\DryIoc\src\DryIoc\Container.cs中的DryIoc.Container.DryIoc.IResolver.Resolve(输入serviceType,IfUnresolved IfUnresolved)处:第230行 在D:\Dev\DryIoc\src\DryIoc\Container.cs中的DryIoc.Resolver.Resolve(IResolver Resolver,键入serviceType)处:第5884行 位于Prism.DryIoc.Ioc.DryIocContainerExtension.Resolve(类型) 在Prism.PrismApplicationBase.b_uu6_u0(对象视图,类型) 在Prism.Mvvm.ViewModelLocationProvider.AutoWireViewModelChanged(对象视图,操作'2 setDataContextCallback) 在Prism.Mvvm.ViewModelLocator.AutoWireViewModelChanged处(DependencyObject d,DependencyPropertyChangedEventArgs e) 位于System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e) 位于System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e) 位于System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs参数) 在System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex EntryIndex,DependencyProperty dp,PropertyMetadata,EffectiveValueEntry oldEntry,EffectiveValueEntry&newEntry,布尔强制WithDeferredReference,布尔强制WithCurrentValue,OperationType OperationType) 位于System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp、对象值、PropertyMetadata元数据、布尔强制WithDeferredReference、布尔强制WithCurrentValue、OperationType OperationType、布尔isInternal) 位于System.Windows.DependencyObject.SetValue(DependencyProperty dp,对象值) 在System.Windows.Baml2006.WpfMemberInvoker.SetValue(对象实例,对象值) 位于MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember成员、对象对象、对象值)
在MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst,XamlMember属性,Object value)

第一行尝试加载项ConfigureServices

services.TryAddSingleton(typeof(IOptionsSnapshot<>),typeof(OptionsManager<>));
services.TryAddSingleton(typeof(IOptionsSnapshot)、typeof(optionmanager));
services.TryAddSingleton(typeof(IOptionsSnapshot<>),typeof(OptionsManager<>));