none
converter string em DataContext RRS feed

  • Pergunta

  • Olá pessoal,

    Tem como eu converter ou buscar uma classe apartir do nome....
    Ex: eu tenho que instanciar um objeto do Tipo: Context.Pedido, mas so tenho o nome em uma string "Pedido".

    nao tem nada parecido com ctr = FindControl(ControlName, ctr)
    ou um for each....sei lá....ja quebrei muito a cabeça e nao consegui...


    Será que tem como???

    Att,

    quarta-feira, 16 de dezembro de 2009 00:13

Respostas

  • Igor,

    Você pode utilizar Reflection para instanciar uma entidade.

    Por exemplo:

    // assembly que contém as classes LINQ
    // (se estiver em outro assembly modifique o código abaixo)
    var assembly = Assembly.GetExecutingAssembly();

    // busca pelo tipo com o nome Customer
    var customerType = (from type in assembly.GetTypes()
                        where type.Name == "Customer"
                        select type).FirstOrDefault();

    // instancia entidade
    object customer = Activator.CreateInstance(customerType);


    Um problema é que a variável customer será um object e você terá que utilizar Reflection novamente para utilizar as suas propriedades.

    Somente uma observação: O LINQ foi criado justamente para que tivéssemos as entidades da base de dados como classes em nosso código. Não entendo a necessidade de utilizar o Reflection.

    Att.

    Ari C. Raimundo
    MCAD, MCP
    http://araimundo.blogspot.com
    • Marcado como Resposta Igor Vessali segunda-feira, 1 de março de 2010 11:46
    segunda-feira, 18 de janeiro de 2010 01:57

Todas as Respostas

  • Boa tarde Igor...

    não entendi direito oq vc quis dizer...
    vc tem o nome Context.Pedido dentro de uma string e vc quer instaciar um objeto dela eh isso?!?

    estou no aguardo

    abraco
    segunda-feira, 21 de dezembro de 2009 20:02
  • Igor,

    Você pode utilizar Reflection para instanciar uma entidade.

    Por exemplo:

    // assembly que contém as classes LINQ
    // (se estiver em outro assembly modifique o código abaixo)
    var assembly = Assembly.GetExecutingAssembly();

    // busca pelo tipo com o nome Customer
    var customerType = (from type in assembly.GetTypes()
                        where type.Name == "Customer"
                        select type).FirstOrDefault();

    // instancia entidade
    object customer = Activator.CreateInstance(customerType);


    Um problema é que a variável customer será um object e você terá que utilizar Reflection novamente para utilizar as suas propriedades.

    Somente uma observação: O LINQ foi criado justamente para que tivéssemos as entidades da base de dados como classes em nosso código. Não entendo a necessidade de utilizar o Reflection.

    Att.

    Ari C. Raimundo
    MCAD, MCP
    http://araimundo.blogspot.com
    • Marcado como Resposta Igor Vessali segunda-feira, 1 de março de 2010 11:46
    segunda-feira, 18 de janeiro de 2010 01:57