在使用SImpleIOC容器中,会出现某个实例需要反复创建的情况
/// <summary>
/// 打开某某窗口
/// </summary>
private void OpenWindow()
{
var guid = System.Guid.NewGuid().ToString();//使用Guid作为实例Key
var vm = SimpleIoc.Default.GetInstance<Example>(guid);//获取实例对象
vm.SetTitile();//执行实例中的方法
var addWinow = new AddWindow() { DataContext = vm };//设置VM对象
addWinow.Closed += (s, e) => SimpleIoc.Default.Unregister(guid);//订阅Closed事件,注销实例
addWinow.ShowDialog();
}
需要注意的是SimpleIOC中拥有Key参数的Unregister重载方法,不会删除容器注册,只会清除实例并销毁内存