wpf prism 项目使用IMemoryCache

本文介绍了如何在.NET应用程序中将MemoryCache注入到依赖注入容器(DI)中,并展示了一个实例,包括在App.xaml.cs中的配置和在构造函数及方法中使用MemoryCache存储数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.将MemoryCache注入到容器

App.xaml.cs中写入代码:

  protected override IContainerExtension CreateContainerExtension()
        {
            var serviceCollection = new ServiceCollection();
            serviceCollection.AddMemoryCache();
            return new DryIocContainerExtension(new Container(CreateContainerRules())
                .WithDependencyInjectionAdapter(serviceCollection));
        }

2.程序中使用:

private readonly IMemoryCache _memoryCache;

public 构造函数(IMemoryCache memoryCache)
{
   _memoryCache = memoryCache;
}

public TestMemoryCache()
{
  _memoryCache.Set($"testCache","hello");
}

### 创建基于 WPFPrism 框架的应用程序 对于希望构建复杂且可维护的 Windows Presentation Foundation (WPF) 应用程序而言,采用 Prism 框架可以极大地简化开发过程。Prism 是一种指导开发者设计松耦合应用程序的框架,特别适合于大型团队协作开发。 #### 初始化项目环境 为了启动一个新的 WPF 项目并集成 Prism 框架,首先需要确保 Visual Studio 已经安装了必要的组件和支持工具[^1]: ```powershell dotnet new wpf -n MyWpfApp cd MyWpfApp dotnet add package Microsoft.Prism.Unity.Wpf ``` 这段命令会创建一个名为 `MyWpfApp` 的基础 WPF 项目,并通过 NuGet 添加对 Prism Unity 版本的支持。 #### 设置模块化架构 Prism 推崇模块化的应用结构,在此模式下,不同的功能区域被分割成独立的模块来实现解耦和易于管理的目的。这可以通过定义接口和服务契约达成,从而允许各个部分之间保持低度依赖关系。 ```csharp public class AppModule : ModuleBase { protected override void Load() { // Register services with the container here. Container.RegisterType<IMyService, MyServiceImpl>(); base.Load(); } } ``` 上述代码展示了如何注册服务到容器中以便后续注入使用。 #### 实现视图模型优先的设计理念 遵循 MVVM(Model-View-ViewModel)模式是 Prism 中的核心原则之一。它提倡将 UI 层与业务逻辑层分离,使得界面更加灵活多变而不影响底层数据处理机制。 ```xml <!-- MainWindow.xaml --> <Window x:Class="MyWpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Title="MainWindow" Height="350" Width="525"> <Grid> <!-- Bind to ViewModel properties directly --> <TextBlock Text="{Binding Greeting}" /> </Grid> </Window> ``` 在此 XAML 文件里,控件属性绑定到了对应的 View Model 成员变量上,实现了双向的数据同步效果。 #### 启动配置与事件聚合器 最后一步是在 App.xaml.cs 或者 Bootstrapper 类里面完成初始化工作,包括但不限于设置主题样式、加载初始模块以及订阅全局消息通知等操作。 ```csharp protected override void ConfigureContainer(ContainerBuilder builder) { base.ConfigureContainer(builder); // Add your module registrations here... } protected override DependencyObject CreateShell() { return Container.Resolve<MainWindow>(); } protected override void InitializeModules() { EventAggregator.GetEvent<PubSubEvent<string>>().Subscribe(OnMessageReceived); base.InitializeModules(); } ``` 以上方法覆盖来自基类的方法,用于自定义应用程序的行为特性,比如指定主窗口实例或者监听特定类型的广播事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨中深巷的油纸伞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值