Pergunta

Eu estou tentando criar uma instância de um dataset tipado dinamicamente no meu código em tempo de execução. Eu tenho o tipo disponível para mim, mas quando eu tento fazer isso:

object obj = Activator.CreateInstance(Type.GetType("TYPED DATASET TYPE HERE"));

O problema é do tipo não parece estar de acordo válido com o código quando tento executá-lo. O que eu poderia estar fazendo de errado aqui?

Foi útil?

Solução

Onde está o tipo definido? (Que montagem).

A menos que você dê a ele um nome de assembly qualificado, ele só olhar nos chamando de montagem, e alguns outros conjuntos chave. Opções:

  • usar um nome de assembly qualificado ( "somen.amespace.sometype, someassembly, ...")
  • obter a instância Assembly (de um tipo conhecido em que a montagem), e uso GetType(fullyQualifiedName) na instância Assembly

Outras dicas

Assumindo que você está emitindo o código de conjunto de dados correto, você também pode precisar de carregar o assembly.

Olhe para o seguinte .net namespaces Reflection.Emit, e reflexão.

Você também pode olhar para os projetos de código aberto, como Windsor, que utilizam reflexão para emitir novas classes para criar interceptores. Pode haver código lá que você pode aprender.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top