Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

288
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda