2017-11-03 1 views
-4

Ich benutze eine DLL mit vielen Klassen. Ich würde gerne Dinamically Interfaces für diese Klassen implementieren, dann kann ich Unit-Test durch Mock testen.C# Gibt es eine Möglichkeit, Schnittstellen für Klassen aus dlls zu implementieren?

Gibt es eine Möglichkeit, es zu tun?

Beispiel:

Die DLL eine Klasse Comunicator

public class Comunicator 
{ 
    public void Execute() 
    { 
     //execute something 
    } 
} 

Gibt es eine Möglichkeit, diese Klasse zu tun, die Schnittstelle unter dinamically hat zu implementieren?

public interface IComunicator 
{ 
    void Execute(); 
} 

Auf diese Weise möchte ich, dass die Immobilie unter

public IComunicator Comunicator{ get; set; } 

Lage sein, diese Zuordnung

Comunicator = new Comunicator(); 
+0

Diese Frage ist unklar. –

+0

Was ist passiert, als Sie versuchten, eine Schnittstelle von der DLL zu implementieren? Hast du? –

+0

Sorry Leute, ich habe jetzt meine Frage besser erklärt –

Antwort

1

zu verstehen, ist es eine Möglichkeit, diese Klasse zu tun, die Schnittstelle unten dynamisch Umsetzung ?

Kurze Antwort: NO

Wenn die DLL eine 3rd-Party-Bibliothek ist, dann gibt es nichts, was man tun kann, diese Klasse zu ändern, wie Sie keine Kontrolle darüber haben.

Sie könnten jedoch eigene Klassen und Abstraktionen erstellen, um die Abhängigkeit von Drittanbietern einzukapseln.

Sie erstellen Ihre gewünschte Schnittstelle

public interface IComunicator { 
    void Execute(); 
} 

Und entweder mit Verkapselung

public class MyCommunicator : ICommunicator { 
    private readonly Communicator communicator = new communicator(); 

    public void Execute() { 
     communicator.Execute(); 
    } 
} 

oder Erbschaft (, wenn die Klasse nicht abgedichtet ist)

public class MyCommunicator : Communicator, ICommunicator { 

} 

diese Weise wird die Eigenschaft unter

public IComunicator Comunicator{ get; set; } 

Will der Lage sein, diese Zuordnung zu verstehen

obj.Comunicator = new MyComunicator(); 
+0

Danke, diese Lösung löst mein Problem –

Verwandte Themen