Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

287
Views
Mystery System.Object.GetType() NullReferenceException

We experienced a crash in our program that we are now unable to reproduce. I am trying to put in some code to prevent it from happening again but I am confused over the stack trace.

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()

-- I have cut down the stack trace as it just goes into a load of system code which is just to do with the button being clicked. --

I have managed to deduce that it is pointing to my anonymous delegate on line 8 of my CreateCommands method.

        this.sectionCommand = new DelegateCommand(a =>
        {
            this.OnSectionParameterChanged((Sections)a);
        }, p => this.IsSectionCommandExecutable);

I have seen a similar post on here but the OP was calling GetType explicitly. I am assuming that the cast calls get type, but without being able to reproduce the issue I cannot see what is null.

So my question is: For this stack trace to cause a null reference, is the 'a' variable the null object? (so I would write something like)

            if (a != null)
            {
                this.OnSectionParameterChanged((Sections)a);
            } 

or is the cast from 'a' to 'sections' causing a null object? (so I should write something like)

            if (a is Sections)
            {
                this.OnSectionParameterChanged((Sections)a);
            } 

As requested here is OnSectionParameterChanged

    private void OnSectionParameterChanged(Sections parameter)
    {
        this.SelectedSection = parameter;

        this.RaisePropertyChanged(() => this.SelectedSection);

        this.LoadSettingsPanel();
    }

further to that it calls a 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;
    }
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

The problem that I had described was actually not the real problem. I read on a different site that the < CreateCommands >b__8 part of the stack trace meant that the issue was on line 8 of the CreateCommands method. This lined up exactly with an anonymous delegate and I could see how it matched the behaviour in the bug report.

I actually found the solution to my problem by using IL Dasm (which can be found in

\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin

and opened the EXE which was run and found what the .net thought b__8 actually was. This turned out to be another anonymous delegate which was explicitly calling .GetType() so the problem was actually really easy once I found out what b__8 actually meant.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!