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
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
- Type, MethodInfo, ativação, atributos personalizados
- Informações no nível do código-fonte (atributos Caller)
- Cenários de metaprogramação leve