0Pricing
C# Academy · Aula

Type, MethodInfo, ativação, atributos personalizados

Obtenha objetos Type, localize MethodInfo, invoque métodos, crie instâncias com Activator e defina ou leia atributos personalizados.

Type, MethodInfo, ativação, atributos personalizados é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 3 aulas no total.

Visão geral

Objetivo: usar reflexão com segurança.

  • Obter Type
  • Encontrar MethodInfo
  • Criar por meio de Activator
  • Definir e ler atributos

Obter Type

Obtenha Type a partir de typeof, de uma instance com GetType() ou pelo nome usando Type.GetType.

using System;

public class Sample { }

public class Program
{
  public static void Main(string[] args)
  {
    // 1) From a compile-time type
    Type t1 = typeof(Sample);

    // 2) From an instance
    Sample s = new Sample();
    Type t2 = s.GetType();

    // 3) From a full name (needs assembly-qualified name for external types)
    Type t3 = Type.GetType("System.String");

    Console.WriteLine(t1.Name + ", " + t2.FullName + ", " + (t3 == null ? "null" : t3.Name));
  }
}

MethodInfo.Invoke

Use GetMethod para localizar um método e Invoke para chamá-lo. Passe instance e uma matriz de argumentos.

using System;
using System.Reflection;

public class Greeter
{
  public string Hello(string name) { return "Hello, " + name; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Greeter g = new Greeter();
    Type t = typeof(Greeter);

    MethodInfo mi = t.GetMethod("Hello"); // public instance method
    object result = mi.Invoke(g, new object[] { "Ada" }); // call dynamically

    Console.WriteLine(result); // Hello, Ada
  }
}

Noções básicas de Activator

Activator.CreateInstance(Type) cria um objeto usando o construtor público sem parâmetros.

using System;

public class Person
{
  public string Name { get; set; }
  public Person() { Name = "Unknown"; } // parameterless ctor
}

public class Program
{
  public static void Main(string[] args)
  {
    Type tp = typeof(Person);
    object o = Activator.CreateInstance(tp); // uses public parameterless ctor
    Person p = (Person)o;
    p.Name = "Alan";
    Console.WriteLine("Created: " + p.Name);
  }
}

Atributos personalizados

Crie uma pequena classe Attribute e recupere-a por meio de GetCustomAttributes no tipo ou método.

using System;
using System.Reflection;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class LabelAttribute : Attribute
{
  public string Text { get; private set; }
  public LabelAttribute(string text) { Text = text; }
}

[Label("Utility class")]
public class Utils
{
  [Label("Adds two ints")]
  public static int Add(int a, int b) { return a + b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Type t = typeof(Utils);

    // Read class attribute
    object[] classAttrs = t.GetCustomAttributes(typeof(LabelAttribute), false);
    if (classAttrs.Length > 0)
      Console.WriteLine("Class label: " + ((LabelAttribute)classAttrs[0]).Text);

    // Read method attribute
    MethodInfo mi = t.GetMethod("Add");
    object[] methodAttrs = mi.GetCustomAttributes(typeof(LabelAttribute), false);
    if (methodAttrs.Length > 0)
      Console.WriteLine("Method label: " + ((LabelAttribute)methodAttrs[0]).Text);
  }
}

Dicas e segurança

Dicas:

  • Verifique se Type.GetType retorna null e se há membros ausentes.
  • Prefira typeof quando possível (é mais rápido e seguro).
  • Mantenha o uso de reflexão centralizado e bem documentado.
  • Use BindingFlags para localizar membros não públicos ou estáticos.

Noções básicas de ativação

Verificação rápida: qual API cria uma instância a partir de um Type que tem um construtor público sem parâmetros?

Recapitulação

Recapitulação: obtenha um Type, encontre MethodInfo, crie com Activator e leia atributos usando GetCustomAttributes.

Perguntas Frequentes

A aula “Type, MethodInfo, ativação, atributos personalizados” é grátis?

Sim — o texto completo de “Type, MethodInfo, ativação, atributos personalizados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 3 aulas no total.

O que vou aprender em “Type, MethodInfo, ativação, atributos personalizados”?

Obtenha objetos Type, localize MethodInfo, invoque métodos, crie instâncias com Activator e defina ou leia atributos personalizados. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 3.

Quanto tempo leva a aula “Type, MethodInfo, ativação, atributos personalizados”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Type, MethodInfo, ativação, atributos personalizados
  2. Informações no nível do código-fonte (atributos Caller)
  3. Cenários de metaprogramação leve
← Voltar para C# Academy