欢迎光临
我的个人博客网站

WPF MVVMLight SimpleIOC创建一次性实例

在某些业务场景中,可能并不需要单例,而是每次都创建新的实例,下面是SimpleIOC使用一次性实例的用法

        /// <summary>         /// 打开某某窗口         /// </summary>         private void OpenWindow()         {             var guid = System.Guid.NewGuid().ToString();//使用Guid作为实例Key             var vm = SimpleIoc.Default.GetInstance<ExampleViewModel>(guid);//获取实例对象             vm.SetTitile();//执行实例中的方法             var addWinow = new AddWindow() { DataContext = vm };//设置VM对象             addWinow.Closed += (s, e) => SimpleIoc.Default.Unregister(guid);//订阅Closed事件,注销实例             addWinow.ShowDialog();         } 

需要注意的是SimpleIOC中所有Unregister重载方法都会销毁实例,单但拥有Key参数的Unregister重载方法,不会卸载实例只会销毁实例
还有一种更加便捷的方法

        public override void Cleanup()         {             base.Cleanup();         } 

重写实例的Cleanup注销方法,但不会卸载实例,当下一次获取实例时会创建新的实例(前提是要执行过Cleanup())
这样我们既可以通过IOC解耦,又可以实现业务需求

赞(0) 打赏
未经允许不得转载:张拓的天空 » WPF MVVMLight SimpleIOC创建一次性实例
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏