2009-04-02 10 views
1

Ich erstelle zur Laufzeit eine dynamische Klasse in einer dynamischen Assembly und möchte Methoden für diese Klasse bei Bedarf definieren können.Ändern eines Typs, nachdem er mit TypeBuilder.CreateType erstellt wurde

Ex.

  1. Erstellen Sie das Type X
  2. definieren Methode Geta auf Typ X
  3. Typ X
  4. Anruf Geta
  5. Verwendung gleichen Typs Builder für Typ X
  6. neue Methode GetB auf Typ X definieren
  7. Neuer Typ X, der jetzt sowohl GetA als auch GetB
hat

Wenn das nicht möglich ist, dann muss ich den Typ auf Anfrage für eine der Methoden erstellen, und dazu muss ich die Assembly ebenfalls jedes Mal erstellen.

Irgendwelche Ideen, Dank

+0

Können Sie etwas Ähnliches tun? Führen Sie Stedp 1-3 aus, um den Typ X zu erhalten, und führen Sie dann 1, 2, 6 und 7 aus, um den Typ Y zu erhalten (das ist nicht X?) –

Antwort

0

Vielleicht sollten Sie den Typ mit CodeDom erstellen. Sie können den gesamten Typ erstellen, den Code kompilieren, dann die neue Assembly laden und den Typ verwenden.

1

Sie können keine "vollen" Methoden erstellen (erkennbar über Reflektion) - Sie können jedoch DynamicMethod verwenden, um neue IL-Blöcke mit einem Typ (hauptsächlich für den Bereich usw.) zu verknüpfen. Aber was Sie beschreiben, ist ein Job für das DLR in 4.0 (und eine Sprache wie Iron Python; C# und VB fügen keine Sprachunterstützung für hinzu, die dynamische Methoden deklariert - nur sie konsumierend).

Verwandte Themen