2009-06-02 27 views
2

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

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

Das Problem ist nicht der Typ des Code gültig zu sein scheint nach, wenn ich versuche, und führen Sie es. Was könnte ich hier falsch machen?

+0

Es kann eine Reihe von Problemen im Zusammenhang mit asp.net geben. Guter erster Schritt, um das Problem zu lokalisieren, besteht darin, eine Instanz aus einer Bibliothek, einer Konsole oder einer winforms-Anwendung zu erstellen. –

+0

Re comment - eigentlich, typeof (TheKnownType). Assembly.GetType (...) sollte tun; Sie müssen keine Instanz erstellen. –

+0

Eine andere Sache, die ich gefunden habe, als ich tatsächlich versuchte, sie zu übertragen ... Stellen Sie sicher, dass Sie am Ende ein .Unwrap() hinzufügen, damit Sie es für jeden gewünschten Objekttyp verwenden können. Dadurch konnte ich es als eine Standard-Datentabelle, die ich brauchte. – Noah

Antwort

3

Wo ist der Typ definiert? (welche Versammlung).

Es sei denn, Sie geben ihm einen qualifizierten Namen der Versammlung, es sieht nur in der Versammlung Versammlung und einige andere Schlüsselanordnungen. Optionen:

  • Verwendung eine Versammlung qualifizierte Namen ("somen.amespace.sometype, someassembly, ...")
  • erhalten die Assembly Instanz (von einem bekannten Typ in dieser Assembly), und verwenden Sie GetType(fullyQualifiedName) auf dem Assembly Instanz
+0

Danke für den Vorschlag! Am Ende habe ich eine lokal bekannte Instanz erstellt, getype() für dieses Objekt aufgerufen und die Eigenschaften verwendet. Das Angeben der Assembly schien dieses Problem zu lösen. – Noah

0

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

Sehen Sie sich die folgenden .NET-Namespaces reflection.emit und reflection an.

Sie könnten auch die Open-Source-Projekte wie Windsor betrachten, die Reflektion verwenden, um neue Klassen zu erzeugen, um Interzeptoren zu erzeugen. Es kann Code geben, von dem Sie lernen können.

Verwandte Themen