Błąd przy wyciąganiu wartości zmiennej

0

Cześć,
Nie mogę pobrać wartości zmiennej. Wywala błąd: System.NullReferenceException: 'Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.'.
Z góry dziękuję za pomoc.

class Program
    {
        static void Main(string[] args)
        {
            
            object o = new Mikolaj();
            var a = o.GetType().GetField("zmienna").GetValue(o);
            ;
        }
    }

    internal class Mikolaj
    {
        internal static string zmienna = "MojaMetada";
    }
0

poczytaj o internal

    internal class Mikolaj
  {
        public static string zmienna = "MojaMetada";
  }
1

Spróbuj tak:

using System;
using System.Reflection;

namespace ConsoleApp60
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = typeof(Mikolaj).GetField("zmienna", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
            Console.WriteLine(a);
        }
    }

    internal class Mikolaj
    {
        internal static string zmienna = "MojaMetada";
    }
}

Błędy:

  • niepubliczne pola potrzebują BindingFlas.NonPublic - możesz zrobić jak napisał kolega wyżej (zamienić klasę i pole na publiczne), wtedy kod wyglądałby następująco:
typeof(Mikolaj).GetField("zmienna").GetValue(null);
  • statyczne pola nie potrzebują instancji klasy

1 użytkowników online, w tym zalogowanych: 0, gości: 1