Frage

Ich versuche, eine Instanz eines typisierten Datensatzes dynamisch in meinem Code zur Laufzeit zu erstellen. Ich habe die Art mich zur Verfügung, aber wenn ich versuche, dies zu tun:

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

Das Problem ist der Typ nicht gültig zu sein scheint den Code nach, wenn ich es versuchen und laufe. Was könnte ich falsch hier tun?

War es hilfreich?

Lösung

Wo ist der Typ definiert? (Die Versammlung).

Wenn Sie es eine Assembly qualifizierten Namen geben, wird es aussehen nur in der Aufruf Montage, und ein paar andere wichtige Baugruppen. Optionen:

  • verwenden, um eine Montage qualifizierten Namen ( "somen.amespace.sometype, someassembly, ...")
  • erhält die Assembly Instanz (von einem bekannten Typ in dieser Assembly), und verwenden Sie GetType(fullyQualifiedName) auf der Assembly Instanz

Andere Tipps

Angenommen, Sie die richtige Dataset Code emittieren können Sie auch die Montage laden müssen.

Schauen Sie in die folgenden .net-Namespaces Reflection.Emit und Reflexion.

Sie können auch auf die Open-Source-Projekte aussehen wie windsor die Reflektion verwenden, um neue Klassen zu emittieren Abfangjäger zu erstellen. Es drin sein Code kann, dass Sie lernen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top