我想知道我们是否可以显式编写代码以便知道该类的实例是否已经可用,并且如果实例可用,我们可以将其丢弃,然后新实例的类可以创建 我正在WPF和Prism中进行一个项目,它的知识非常有限。 任何帮助,将不胜感激。检查类实例是否已经存在
public class BillingSectionModule : IModule
{
private IRegionManager _regionManager;
private IUnityContainer _unityContainer;
public BillingSectionModule(IRegionManager regionManager, IUnityContainer unityContainer)
{
this._regionManager = regionManager;
this._unityContainer = unityContainer;
}
#region IModule Members
public void Initialize()
{
_unityContainer.RegisterType<IBillingSectionViewModel, BillingSectionViewModel>();
_unityContainer.RegisterType<IBillingSectionView, BillingSectionView>();
_unityContainer.RegisterType<IBillingSectionAdvanceBillingViewModel, BillingSectionAdvanceBillingViewModel>();
_unityContainer.RegisterType<IBillingSectionAdvanceBillingView, BillingSectionAdvanceBillingView>();
_regionManager.RegisterViewWithRegion(RegionNames.BillingOptionRegion, typeof(IBillingSectionView));
}
#endregion
}
这是模块级的我已经写了... 正如你可以看到有一个单独的模块相关的意见。 所以,当过
public void ChangeToAdvanceRegion(IRegionManager regionManager, IUnityContainer unityContainer)
{
//change Billing Area
var BillingAreaview = ServiceLocator.Current.GetInstance<IBillingSectionAdvanceView>();
if (!regionManager.Regions[RegionNames.BillingOptionRegion].Views.Contains(BillingAreaview))
regionManager.Regions[RegionNames.BillingOptionRegion].Add(BillingAreaview);
regionManager.Regions[RegionNames.BillingOptionRegion].Activate(BillingAreaview);
//reset the values
_eventAggregator.GetEvent<NewItemOrderEvent>().Publish("CHANGEADVANCEITEMFROMREGION");
}
public void ChangeToNewOrderRegion(IRegionManager regionManager, IUnityContainer unityContainer)
{
//change Billing Area
var BillingAreaview = ServiceLocator.Current.GetInstance<IBillingSectionView>();
if (!regionManager.Regions[RegionNames.BillingOptionRegion].Views.Contains(BillingAreaview))
regionManager.Regions[RegionNames.BillingOptionRegion].Add(BillingAreaview);
regionManager.Regions[RegionNames.BillingOptionRegion].Activate(BillingAreaview);
//reset the values
_eventAggregator.GetEvent<NewItemOrderEvent>().Publish("CHANGENEWITEMFROMREGION");
}
所以,当过我先..视图模型的先前创建的实例没有被设置在第二个..但是一个新创建致电上述载体作用... 所以当我调用第n次时,视图模型内部的函数被执行n tyms。在应用程序中创建加载问题....
您是否指单例模式? http://csharpindepth.com/articles/general/singleton.aspx – David 2014-09-29 13:01:01
@大卫Singleton模式只是保持相同的实例吗? – 2014-09-29 13:09:28
我想每次都有一个新的实例,但想要处理已经创建的实例 – 2014-09-29 13:10:02