Ich habe eine Anwendung, die Plugins verwendet, die über eine Schnittstelle verwaltet werden. Ich lade dann dynamisch die Plug-in-Klassen und wirke sie auf die Schnittstelle, um mit ihnen zu arbeiten.
Ich habe die folgende Codezeile, gehe davon aus, dass IPlugin meine Schnittstelle ist.
%Vor%Dies sollte ziemlich einfach sein, erstellen Sie die Instanz und werfen Sie sie auf die Schnittstelle. Ich weiß, dass die Assembly und die voll qualifizierten Namen korrekt sind, aber ich bekomme die folgende Ausnahme.
Ausnahme = System.InvalidCastException: Kann nicht ausgeführt werden Gussobjekt vom Typ 'System.Runtime.Remoting.ObjectHandle' tippen 'MyNamespace.Components.Integration.IPlugin'. beim MyNamespace.Components.Integration.PluginProxy..ctor (Int32 instanceId)
Irgendwelche Ideen, was könnte das verursachen?
Wie Sie in der Dokumentation sehen können, gibt diese Überladung ein ObjectHandle
Objekt , das die neue Instanz umschließt.
Der ObjectHandle
kann nicht direkt an Ihre Schnittstelle übergeben werden.
Stattdessen müssen Sie die Methode Unwrap
aufrufen, so:
Tags und Links c# reflection interface