Programımızda artık yeniden üretemediğimiz bir kilitlenme yaşadık. Tekrar olmasını engellemek için bir kod koymayı deniyorum ama yığın izinin üzerinde kafam karıştı. Mystery System.Object.GetType() NullReferenceException
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Object.GetType()
at Project.ViewModel.MainVM.<CreateCommands>b__8(Object a)
at System.Windows.Controls.Button.OnClick()
- sadece düğmeye tıklandığında edilmekle ilgili adildir sistem kodunun bir yük gider gibi yığın izlemesi aşağı kestik. -
CreateCommands yöntemimin 8. satırı üzerindeki anonim temsilci işaret ettiğini anladım.
this.sectionCommand = new DelegateCommand(a =>
{
this.OnSectionParameterChanged((Sections)a);
}, p => this.IsSectionCommandExecutable);
Burada benzer bir gönderi gördüm, ancak OP, GetType'ı açıkça çağırıyordu. Yayın çağrılarının tür aldığını, ancak sorunu yeniden üretemediğimi varsayarak neyin boş olduğunu göremiyorum.
Bu yüzden sorum şu: Bu yığın izlemesi boş bir değere neden olmak için 'a' değişkeni null nesnesine mi?
if (a != null)
{
this.OnSectionParameterChanged((Sections)a);
}
(yani yazabiliriz) ya da gelen dökme 'bir' 'bölüm' boş bir nesne neden nasıl? ben tarif ettiği sorunun bir LoadSettingsPanel
private void LoadSettingsPanel()
{
if (sectionVMs == null)
return;
// Get section
SectionViewModel = sectionVMs.SingleOrDefault(s.SectionName == SelectedSection);
this.IsSelectedSectionEnabled = this.Config.GetIsSectionEnabled(this.SelectedSection);
this.RaisePropertyChanged(() => this.IsSelectedSectionEnabled);
// Set advanced
AdvancedViewModel = this.SectionViewModel;
if (AdvancedViewModel != null)
HasAdvanced = AdvancedViewModel.HasAdvanced;
}
Daha ilginç olan soru: GetType neden çağırmıyor olsanız da neden yığındadır? OnSectionParameterChanged gövdesini yayınlayın. Belirtilmiş ve GetType olarak adlandırılmış olabilir. Ayrıca, GetType kendini NRE ile nasıl kilitleyebilir? Bu bir CLR hatası mı? – usr
Hata ayıklamayı denediniz mi? this.OnSectionParameterChanged() 'den önce bir kesme noktası koyun ve 'a' değerinin ne olduğunu kendiniz görün ve '(Sections) a)' değerini görmek için hemen pencereyi kullanın. – DLeh
sadece bir kerelik bir hata mıydı? Bu tekrarlanabilir değil mi? istisnanın, uygulamayı çalıştıran makinede başka bir sorunun belirtisi olması olabilir. – user1666620