Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

293
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda