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

Błąd przy wyciąganiu wartości zmiennej
Mikolaj Pydzik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 39
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.

Kopiuj
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";
    }
Kubuś Puchatek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 235
0

poczytaj o internal

Kopiuj
    internal class Mikolaj
  {
        public static string zmienna = "MojaMetada";
  }
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2520
1

Spróbuj tak:

Kopiuj
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:
Kopiuj
typeof(Mikolaj).GetField("zmienna").GetValue(null);
  • statyczne pola nie potrzebują instancji klasy

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.