Question

Je suis en train de créer une instance d'un groupe de données typé dynamiquement dans mon code lors de l'exécution. J'ai le type disponible pour moi, mais lorsque je tente de faire ceci:

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

Le problème est le type ne semble pas être valide selon le code quand je tente de l'exécuter. Que pouvais-je faire mal ici?

Était-ce utile?

La solution

Où est le type défini? (Qui ensemble).

Sauf si vous lui donnez un nom de montage qualifié, il suffit de regarder dans le appelant Assemblée, et quelques autres ensembles clés. Options:

  • utiliser un nom d'assemblage qualifié ( "somen.amespace.sometype, someassembly, ...")
  • obtenir l'instance de Assembly (d'un type connu dans cette assemblée), et utiliser GetType(fullyQualifiedName) sur l'instance Assembly

Autres conseils

En supposant que vous émettez le code du jeu de données correct, vous devrez peut-être charger l'ensemble.

Regardez dans les espaces de noms .net suivant Reflection.Emit, et la réflexion.

Vous pouvez aussi regarder les projets open source tels que windsor qui utilisent la réflexion pour émettre de nouvelles classes pour créer des intercepteurs. Il peut y avoir un code là que vous pouvez apprendre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top