Domanda

Sto cercando di creare un'istanza di un DataSet tipizzato in modo dinamico nel mio codice in fase di esecuzione. Ho il tipo a mia disposizione, ma quando provo a fare questo:

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

Il problema è il tipo non sembra essere valido secondo il codice quando provo ed eseguirlo. Che cosa potrei fare male qui?

È stato utile?

Soluzione

Dove è il tipo definito? (Il quale complesso).

A meno che non si dà un assembly nome completo, apparirà solo nel chiama di montaggio, e pochi altri gruppi chiave. Opzioni:

  • utilizzare un assembly nome qualificato ( "somen.amespace.sometype, someassembly, ...")
  • ottenere l'istanza Assembly (da tipo noto in tale montaggio), e utilizzare GetType(fullyQualifiedName) sull'istanza Assembly

Altri suggerimenti

Supponendo che si sta emettendo il codice corretto set di dati potrebbe anche essere necessario per caricare l'assembly.

Esaminare le seguenti spazi dei nomi .net Reflection.Emit, e la riflessione.

Si potrebbe anche guardare ai progetti open source come Windsor che utilizzano riflessione per emettere nuove classi per creare intercettori. Ci può essere il codice in là che si può imparare da.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top