1.Nuget包安装

2.代码示例:
using System.ComponentModel;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ContainWPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
IContainerProvider containerProvider;
public MainWindow() : this(new UnityContainerExtension())
{
}
public MainWindow(IContainerProvider containerProvider)
{
IContainerRegistry containerRegistry = (IContainerRegistry)containerProvider;
this.containerProvider = containerProvider;
InitializeComponent();
containerRegistry.RegisterSingleton<IManage_Main, Manage_Main>();
containerRegistry.RegisterSingleton<Initial>(); // 注册 Initial 类
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// 通过容器解析 Initial 类并调用它的方法
var initial = containerProvider.Resolve<Initial>();
string shi=initial.StartWork();
MessageBox.Show($"{shi}");
}
}
public class AppBootstrapper : PrismApplication
{
// 注册应用程序的依赖项
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
// 使用 Unity 容器注册 IManage_Main 接口和它的实现类 Manage_Main
containerRegistry.Register<IManage_Main, Manage_Main>();
// 通过 Unity 容器解析 Initial 类的实例
containerRegistry.Register<Initial>();
}
// 设置应用程序视图
protected override void OnInitialized()
{
// 使用 Unity 容器解析 Initial 类的实例,并调用 StartWork 方法
var initial = Container.Resolve<Initial>();
initial.StartWork(); // 调用 StartWork 方法,实际上是调用 IManage_Main 的 DoWork()
}
protected override System.Windows.Window CreateShell()
{
throw new NotImplementedException();
}
}
public class Initial
{
private readonly IManage_Main manage_Main;
// 通过构造函数注入 IManage_Main
public Initial(IManage_Main manage_Main)
{
this.manage_Main = manage_Main;
}
// 调用 DoWork 方法
public string StartWork()
{
return manage_Main.RetureModelNameStr();
}
}
public interface IManage_Main
{
string RetureModelNameStr();
}
public class Manage_Main : IManage_Main
{
public string RetureModelNameStr()
{
return ("Manage_Main Model");
}
}
}