我有一个已转换为 .NET 8 的旧版 WPF 应用程序。一切都运行良好,但应用程序中的单例除外,它无法轻松传输到 Blazor 服务器应用程序。我能够使用预先存在的库启动 Blazor 应用程序,并利用 Fluxor 来管理状态。这效果很好。
但是,在WPF应用程序中,我无法让Fluxor注入IState之类的东西。它在构造函数中始终为 null。 Blazor Server 和 WPF 应用程序现在都需要使用相同的 Fluxor State 管理。
在我的 WPF App.xaml.cs 中:
var coll = new ServiceCollection();
coll.AddFluxor(o => o.ScanAssemblies(typeof(ModelState).Assembly));
var store = (IStore)ServiceCollectionExtension.Resolve(coll, typeof(Store));
store.InitializeAsync().Wait();
coll.AddScoped
public class PricingService : IPricingService
{
public PricingService(IDispatcher dispatcher, IState<PricingState> pricingState...
_dispatcher = dispatcher;
_pricingState = pricingState;
pricingState 始终为 null,因为我无法使用正常的 Microsoft.Extensions.DependencyInjection.ServiceCollection 注册我的 IState
注意,IDispatcher 似乎注入得很好。
按照此操作,https://learn.microsoft.com/en-us/aspnet/core/blazor/hybrid/tutorials/wpf?view=aspnetcore-8.0
然后,您可以将 Fluxor.Web.Blazor.StoreInitializer 嵌入到 WPF 中的 razor 组件中。