Bem vindos ao meu Blog. Como todos dizem: o primeiro post é fácil.
O objetivo é falar de tudo um pouco, do que der na cabeça mas tentar manter o foco em TI. Tentar pelo menos.
Ainda não encontrei o nome ideal, a cor ideal, tema, mas vou tentando. Tenho o objetivo também de tentar manter o Blog em uma estrutura .NET, como não podia deixar de ser.
Pra começar, vou postar a solução que encontrei para uma questão levantada essa semana no trabalho:
Como saber se um evento de um objeto foi assinado?
Pra começar, vamos declarar uma classe com um evento disponível:
public class Quency
{
public event EventHandler OnTest;
public void Test()
{
if (OnTest != null)
OnTest(this, EventArgs.Empty);
}
}
Vamos criar uma instância desse objeto e assinar o evento OnTest dele:
Quency quency = new Quency(); quency.OnTest += new EventHandler(quency_OnTest);
Para cada evento de um objeto, o framework cria internamente um Field( campo privado ) em sua instância que mantém todos os métodos ( delegates ) associados a este evento.
Vamos encontrar esse campo, fazer um cast dele para o tipo MulticastDelegate e, se houver alguma assinatura, ele terá a lista de métodos que foram associados:
MulticastDelegate multiCastDelegate = (MulticastDelegate)quency.GetType().GetField("OnTest", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quency);
if (multiCastDelegate != null)
Delegate[] delegates = multiCastDelegate.GetInvocationList();
Com essa lista de métodos e acesso ao campo de evento em mãos você pode agora remover, adicionar e até executar os métodos. Lembrando que fizemos todo esse acesso via Reflection e, com sorte, vamos falar muito ainda sobre isso.
Bom é isso. Primeiro Blog, primeiro post. Ja está tarde pra cacete e espero melhorar muito a qualidade dos próximos posts.
Frase do dia, muito conhecida pela equipe de um certo projeto: “Nada é fácil!”
Opa, finalmente inaugurou o blog, agora você pode levar a público os códigos da BCL, talvez criar uma seção chamada: “O que você não deve fazer, NUNCA…”, hehehe
É isso aí, agora o desafio vai ser continuar a postar sempre!
Fera kra… já sei de onde vou tirar as matérias para por no meu blog! heheheh…. brincadeira. Muito legal essa iniciativa de compartilhar conhecimento kra, assim como eu tenho aprendido bastante conversando pessoalmente com vc agora muitos outros poderão aprender tb!
grande abraço!