PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Macro substituição como no Visual Foxpro... Reflection? #406158

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

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

Aceitar