Usuário com melhor resposta
Qual a finalidade do reflection

Pergunta
-
Respostas
-
Pnet, blx
da uma lida nesses artigos aqui para tirar suas duvidas
http://www.macoratti.net/11/08/c_refm1.htm
http://www.devmedia.com.br/trabalhando-com-reflection-em-c/26871
Diego Almeida Barreto System Analyst / Software Developer
- Marcado como Resposta pnet sexta-feira, 16 de agosto de 2013 11:36
-
Reflection pode ser usado para examinar ou modificar objetos, suas propriedades ou métodos em tempo de execução. Com reflection você ganha uma certa flexibilidade em relação a programação não sendo necessário nenhum hardcoding para conseguir o desejado.
Se você usa Attributes ou qualquer outro tipo de Meta-data, você já está usando reflection no seu dia-a-dia, porém os Attributes por exemplo, pelo menos os base do .NET framework, são resolvidos sem você ver.
Se você já fez uma classe desse tipo já usou reflection sem saber:
[Serializable] public class Exemplo { [NonSerialized] public int Propriedade1 { get; set; } public string Propriedade2 { get; set; } }
Por baixo dos panos, usando Reflection, o serializador em tempo de execução inspeciona a classe usando GetCustomAttributes e descobre se esta é serializável ou não, e se há alguma propriedade deve ser excluída da serialização.
Outro exemplo clássico seria a necessidade de criar um tipo específico apenas pelo nome e assembly, que é o que acontece hoje no ModelBinder do ASP.NET MVC, em que o HTML conhece os nomes exatos das propriedades, ou da classe de origem se o objeto for mais complexo, quando se posta o Form o objeto de origem é reconstruído no server:/*Objeto de exemplo*/ public class ExemploModelBinder { public int Id { get; set; } public string Propriedade2 { get; set; } }
/*Html Gerado pelos Helpers do MVC*/
<input class="text-box single-line" id="Id" name="id" type="numeric" value=""> <input class="text-box single-line" id="Propriedade2" name="Propriedade2" type="text" value="">
Quando você posta o form, o objeto esperado pelo método é reconstruído e cada input na requisição é colocado na propriedade correta pelo nome usando MemberInfo.
Reflection torna a programação mais dinâmica. Esses são apenas alguns exemplos do que pode ser feito. O namespace System.Reflection traz uma infidade de ferramentas. Aconselho a dar uma conferida no site oficial da MSDN Reflexão na.NET Framework.
Espero que tenha ajudado! Não sei se fui o mais claro o possível.
- Editado Filipe Augusto Lima de Souza sexta-feira, 16 de agosto de 2013 01:41
- Marcado como Resposta pnet sexta-feira, 16 de agosto de 2013 11:36
Todas as Respostas
-
Pnet, blx
da uma lida nesses artigos aqui para tirar suas duvidas
http://www.macoratti.net/11/08/c_refm1.htm
http://www.devmedia.com.br/trabalhando-com-reflection-em-c/26871
Diego Almeida Barreto System Analyst / Software Developer
- Marcado como Resposta pnet sexta-feira, 16 de agosto de 2013 11:36
-
Reflection pode ser usado para examinar ou modificar objetos, suas propriedades ou métodos em tempo de execução. Com reflection você ganha uma certa flexibilidade em relação a programação não sendo necessário nenhum hardcoding para conseguir o desejado.
Se você usa Attributes ou qualquer outro tipo de Meta-data, você já está usando reflection no seu dia-a-dia, porém os Attributes por exemplo, pelo menos os base do .NET framework, são resolvidos sem você ver.
Se você já fez uma classe desse tipo já usou reflection sem saber:
[Serializable] public class Exemplo { [NonSerialized] public int Propriedade1 { get; set; } public string Propriedade2 { get; set; } }
Por baixo dos panos, usando Reflection, o serializador em tempo de execução inspeciona a classe usando GetCustomAttributes e descobre se esta é serializável ou não, e se há alguma propriedade deve ser excluída da serialização.
Outro exemplo clássico seria a necessidade de criar um tipo específico apenas pelo nome e assembly, que é o que acontece hoje no ModelBinder do ASP.NET MVC, em que o HTML conhece os nomes exatos das propriedades, ou da classe de origem se o objeto for mais complexo, quando se posta o Form o objeto de origem é reconstruído no server:/*Objeto de exemplo*/ public class ExemploModelBinder { public int Id { get; set; } public string Propriedade2 { get; set; } }
/*Html Gerado pelos Helpers do MVC*/
<input class="text-box single-line" id="Id" name="id" type="numeric" value=""> <input class="text-box single-line" id="Propriedade2" name="Propriedade2" type="text" value="">
Quando você posta o form, o objeto esperado pelo método é reconstruído e cada input na requisição é colocado na propriedade correta pelo nome usando MemberInfo.
Reflection torna a programação mais dinâmica. Esses são apenas alguns exemplos do que pode ser feito. O namespace System.Reflection traz uma infidade de ferramentas. Aconselho a dar uma conferida no site oficial da MSDN Reflexão na.NET Framework.
Espero que tenha ajudado! Não sei se fui o mais claro o possível.
- Editado Filipe Augusto Lima de Souza sexta-feira, 16 de agosto de 2013 01:41
- Marcado como Resposta pnet sexta-feira, 16 de agosto de 2013 11:36
-