Я хочу знать, можно ли явно написать код, чтобы узнать, доступен ли экземпляр класса или нет, и если экземпляр доступен, мы можем его уничтожить, а затем новый экземпляр из класса может быть создан Я делаю проект в 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
}
Это класс модуля я Ve написано ... Как вы можете видеть, что есть две точки зрения, связанное с одним модулем. Так что, когда-либо
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");
}
Так что, когда когда-либо я вызываю выше functin первый, а затем второй один .. ранее созданный экземпляр модели представления не были захоронены .. но новый один создан ... поэтому, когда я звоню в n-й раз .. функция внутри модели представления выполняется n tyms. создавая проблемы с нагрузкой в приложении ....
Вы имеете в виду шаблон Singleton? http://csharpindepth.com/articles/general/singleton.aspx – David
Шаблон @David Singleton позволяет сохранить тот же самый экземпляр справа? –
Я хочу иметь новый экземпляр каждый раз, но хочу избавиться от уже созданного экземпляра –