Refleksja umożliwia nam dostęp do struktury (klas, metod, zasobów) danego podzespołu (assembly) w czasie działania programu.

Dzięki niej możemy uzyskać informacje na temat metadanych klas bądź obiektów. By to było możliwe musimy dodać przestrzeń nazw System.Reflection do naszego kodu.
using System;
using System.Reflection;

namespace MainProgram
{
  class Program
  {
    public virtual void WriteInfo (string information)
    {
      Console.WriteLine(information);
    }
    static void Main(string[] args)
    {
      Program program = new Program();
      //Informacje o typie
      Type programInfo = program.GetType();
      //Informacje o metodzie
      MethodInfo programMethodInfo = programInfo.GetMethod("WriteInfo");

      Console.WriteLine("Informacje o typie");
      Console.WriteLine("Pełna nazwa: \t" + programInfo.FullName);
      Console.WriteLine("Typ bazowy: \t" + programInfo.BaseType.ToString());
      Console.WriteLine("Przestrzeń nazw: \t" + programInfo.Namespace);

      Console.WriteLine("\nInformacje o metodzie:");
      Console.WriteLine("Nazwa metody: \t" + programMethodInfo.Name);
      Console.WriteLine("Zwracany typ: \t" + programMethodInfo.ReturnType);
      Console.WriteLine("Metoda wirtualna?: \t" + programMethodInfo.IsVirtual);
      Console.Read();
    }
  }   
}

© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci