none
Ler Atributos RRS feed

  • Pergunta

  • Boa tarde pessoal,

     

    Crie um atributo chamado:

    [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
        public class Teste : Attribute
        {

         private teste;

          public AttributeTeste(string pTeste)
            {
                teste = pTeste;
            }

    }

    Eu coloquei este atributo em todas as minhas telas do meu projeto, um total de 7 telas. Criei mais 1 nova tela. Coloquei este código em todas as telas menos na nova tela:

     

    [AttributeTeste("TESTE")]
    public partial class servicos_Teste:

    {
    }

     

     

    Quando eu vou ler os atributos na nova tela  . Estou executando este código:

     

    System.Reflection.AssemblyName[] tipo1 = System.Reflection.Assembly.GetExecutingAssembly();
            Type[] tipo2 = System.Reflection.Assembly.GetExecutingAssembly().GetTypes();
            for (int i = 0; i < tipo2.Length; i++)
            {
                object[] attributess = tipo2Idea.GetCustomAttributes(true);

              for (int k = 0; k < attributess.Length; k++)
                {

                 //Pego o meu atributo.

              }

          }

     

    O método GetExecutingAssembly() só pega os atributos em execução. Alguém pode me dar um exemplo de como eu pegar todos os meus atributos do meu projeto?

    sexta-feira, 25 de maio de 2007 21:08

Todas as Respostas

  • Oi !

     

    O getExecutingAssembly devolve um elemento do tipo Assembly. Neste elemento  do tipo Assembly você pode utilizar o método GetReferencedAssembly, então você obtem todos os assemblies utilizados pelo seu projeto e pode desta forma vasculhar todos os tipos de dados ligados ao seu projeto.

     

    []'s

     

    sexta-feira, 25 de maio de 2007 23:10
  • Bom dia Dennes,

     

    Você teria algum exemplo de como eu vasculhar para  ler o atributo?

    segunda-feira, 28 de maio de 2007 13:16
  • Oi !

     

    É o código que você demonstrou, só que realizado para cada um dos assemblies na referência.

     

    []'s

     

    segunda-feira, 28 de maio de 2007 13:28
  • Tem como eu pegar todas as classes do meu projeto também? se sim teria algum exemplo?
    segunda-feira, 28 de maio de 2007 13:57
  • Oi !

     

    Seu projeto é um único assemblie. Ao ter em mãos a referência a ele, você pode pegar todas as classes que o assembly contém.

     

    Mas isso falando de projeto. Pois pela sua descrição você parece ter na verdade uma solução, ou seja, um projeto que faz referência a várias class libraries (que são outros projetos), por isso a necessidade de pegar as referências que seu projeto possui e as  classes contidas em cada uma.

     

    []'s

     

    segunda-feira, 28 de maio de 2007 14:06
  • ok,

    Mais vc tem algum exemplo de como eu posso pegar um atributo de uma classe do meu projeto? Por exemplo ..

    Eu tenho uma tela aspx. No cs desta tela eu coloco o meu atributo;

    public partial class TesteTela

    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

    }

    [AttributeTeste("TESTE")]
    public partial class servicos_Teste:

    {
    }

    Tem como eu pegar este atributo [AttributeTeste("TESTE")] ?

     

     

    Valew.

    segunda-feira, 28 de maio de 2007 14:39
  • Oi !

     

    Este código, que você mesmo fez, faz isso :

     

    Code Snippet

             object[] attributess = tipo2.GetCustomAttributes(true);

              for (int k = 0; k < attributess.Length; k++)
                {

                 //Pego o meu atributo.

                // attributess[k] ........

              }

     

    []'s

     

    segunda-feira, 28 de maio de 2007 14:50
  • Olá,

     

    você tb pod pegar apenas os atributos do tipo do que vc criou:

     

    Code Snippet

    tipo2.GetCustromAttributes(typeof(Teste), false);

     

    Abraços,

    André Azevedo

    segunda-feira, 28 de maio de 2007 17:27