Macro substituição como no Visual Foxpro... Reflection?

07/08/2011

0

Boa tarde a todos,Além de programar em C# também trabalho a bastante tempo com Visual Foxpro. Um recurso muito utilizado é a chamada MACRO SUBSTITUIÇÃO. Tenho que preencher determinados campos de uma lista para apresentar em um relatório e esse recurso seria de extrema utilidade.O problema é o seguinte (resumido):1. Tenho uma tabela no DB com os tamanhos de um produto... cada linha é um tamanho com sua quantidade, por exemplo:ID   TAM    QTDE1     34      10
2     36        9
3     38      15
...
N     46        1 Como podem ver posso ter vários tamanhos... e nem todos os produtos terão as mesmas quantidades de tamanhos na tabela.No relatório... os campos serão apresentados inline:ID   PRODUTO   TAM1  TAM2  TAM3.... TAM_N
1    PROD01       10         9                 15
2    PROD02                    1         4 Ou seja... terei vários campos onde preciso preencher as quantidades nas respectivas colunas.Bem, em Visual Foxpro eu faria isso da seguinte maneira, tendo que os campos da tabela começem com o prefixo "QTDE" + a posição da grade: '01', '02', '03'... 'N': LOCAL comando = ""

FOR i = 1 TO QuantidadeTamanhosGrade

** o comando fica assim: 'QTDE10 = 42' por exemplo
comando = "QTDE" + i + " = " + lista[i].quantidade
&comando

ENDFOR
 
Ou seja, eu consigo concatenar  uma string e 'executar' ela... assim os comandos ficam muito reduzidos.Agora eu gostaria de fazer algo parecido no C#... a minha estrutura de código é mais ou menos isso:     foreach (retornoSelectModelos item in lista)
    {
      // Preenche a grade do modelo
      var grade = (from g in ctx.PedidoModelosGrade
          where g.idPedidoModelos == item.idPedidoModelos
          orderby g.tamanho
          select g).ToList();

      foreach (var tamanho in grade)
      {
      // AQUI EU TERIA QUE USAR O RECURSO DA MACRO!!!
      // o objeto ITEM possui campos grade01 até gradeX
      // o objeto tamanho possui campos tamanho01 até gradeX
      // Preciso preencher apenas os correspondentes (mesmo numero no caso)

      // Mais ou menos assim:
      string comando = "item.grade" + tamanho.tamanho + " = tamanho.quantidade" + tamanho.tamanho;

      // Arqui rodaria todo o conteúdo de comando
      &comando

      }
    }
 
Suspeito que deva usar Reflection... mas não tenho idéia de como fazer...Alguém poderia me ajudar?
 
Wso Software

Wso Software

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar