如何重置一个IOC容器中的所有实例我使用MVVMLight框架制作了一个C#WPF应用程序。我的应用程序使用ViewModelLocator类在运行时定位视图模型。ViewModelLocator使用MVVMLight框架提供的SimpleIoc类。这是我的场景:用户登录以使用我的应用程序。注销时,我想处置/重置/重新创建所有视图模型实例,以便为下一个用户提供一个干净的环境。我试图在ViewModelLocator类中实现Cleanup()方法,但它不起作用。不工作意味着(第二个)用户看到先前登录用户的数据。第一次尝试:publicstaticvoidCleanup(){SimpleIoc.Default.Reset();}第二次尝试:publicstaticvoidCleanup(){SimpleIoc.Default.Unregister();SimpleIoc.Default.Unregister();SimpleIoc.Default.Register();SimpleIoc.Default.Register();}第三次尝试(不是我想要的,但这是一种解决方法):publicstaticvoidCleanup(){//我在我的视图模型中实现了ICleanup接口//cleanup方法清除了我所有的变量,例如:myCollection.clear();SimpleIoc.Default.GetInstance().Cleanup();SimpleIoc.Default.GetInstance().Cleanup();}如何重置ViewModelLocator类中的所有实例?如有必要,我愿意使用更高级的Ioc容器。使用SimpleIoC我会添加一个带有私有字符串后端的公共静态属性,用于唯一的密钥,如privatestaticstring_currentKey=System.Guid.NewGuid().ToString();publicstaticstringCurrentKey{get{return_currentKey;}私有集{_currentKey=value;}}并使用cleanup方法用当前密钥注销VM,最后重置当前密钥(在每个应用程序重置阶段调用):...CurrentKey=System.Guid.NewGuid().ToString();调用GetInstance(...)时只需传入静态CurrentKey。以上就是C#学习教程:如何重置IOC容器中的所有实例。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——SimpleIoc.Default.GetInstance(ViewModelLocator.CurrentKey);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
