2012-04-12 8 views
1

Ich habe eine benutzerdefinierte ComposablePartCatalog, ComposablePartDefinition und ComposablePart erstellt.Wie erstellt man ein benutzerdefiniertes ComposablePart, das Importe in einer Remote-AppDomain erfüllt?

Diese Komponenten arbeiten alle zusammen, sodass der zusammengesetzte Teil in einer separaten Anwendungsdomäne erstellt wird. Alle arbeiten. Wenn eine Instanz eines exportierten Typs, die einen Import enthält, d. H. Ein Feld mit dem Attribut "Import", erstellt wird, wird dieses Feld nicht auf den erwarteten importierten Typ gesetzt, d. H. Es ist null.

Wenn ich meine benutzerdefinierte ComposablePartDefinition nicht verwende, d. H. Lass es die Standardzusammensetzung machen, werden die Importe erstellt, so dass sie nichts mit den Typen zu tun hat. Also muss es etwas sein, das mir in meinen eigenen Composable-Klassen fehlt.

Ich bin kein Experte in diesem und ich habe im Web nach Informationen zum Erstellen einer benutzerdefinierten ComposablePart, die Importe erfüllt, aber finden Sie alle Informationen dazu, wie dies richtig zu tun.

In meiner benutzerdefinierten ComposablePart überschreiben ich GetExportedValue, die die Instanz des exportierten Typs zurückgibt, und dies funktioniert gut, solange die exportierten Typen nichts importieren.

Ich vermisse offensichtlich etwas Wichtiges, aber ich kann nicht die Dokumentation finden, die erklärt, wie die Importe erstellt werden. In der ComposablePart gibt es die SetImport Override, aber wie soll ich das in meiner abgeleiteten Klasse implementieren? Ist das der Schlüssel, damit meine Importe funktionieren? Oder muss ich etwas tun in GetExportedValue, wenn ich tatsächlich die Instanz des exportierten Typs erstellen, um es zu erhalten, seine Importe "zu komponieren"?

Antwort

0

Ich habe es selbst herausgefunden. Im Kontext der "remote" AppDomain, wo die remote-Instanz erstellt wird, muss ich die remote-Instanz mit einem neuen Katalog erstellen (die ich mit Informationen aus der aufrufenden Domäne erstellt) und eine neue CompositionContainer Übergabe der remote-Instanz in den Konstruktor .

Verwandte Themen