Laden...

Wie kann ich ein Interface aus einer anderen DLL nutzen?

Erstellt von CrocodileDundee vor 3 Jahren Letzter Beitrag vor 3 Jahren 493 Views
C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 3 Jahren
Wie kann ich ein Interface aus einer anderen DLL nutzen?

Hallo zusammen,
ich möchte meine Anwendung mit Interfaces entkoppeln und bin dabei auf ein Problem gestoßen.

Ich habe in C# eine Klasse geschrieben, die ich als dll meinen verschiedenen Anwendungen bereitstelle.

Das Problem ist nun, daß diese Klasse doch von dem Interface erben müßte, über welches ich
zugreifen möchte.

Dieses Interface ist aber natürlich der Klasse aber nicht bekannt, weil komplett extern.

Also folgendes ist halt momentan nicht möglich:



    public class dllClass : IExternesInterface
    {
          ...
    }


Gibt es eine Möglichkeit, daß ich die Klasse trotzdem als externe dll in mein Projekt einbinde und über ein Interface darauf zugreifen kann?
Oder mach ich da einen generellen Denkfehler?

Danke und Gruß
Frank

16.806 Beiträge seit 2008
vor 3 Jahren

Interface erbt man nicht, sondern implementiert man.
Du kannst problemlos Interfaces implementieren, die in externen DLLs liegen - schon immer.
Du musst dazu nur die DLL einbinden (oder noch besser als NuGet hinzufügen) und das using setzen.

C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 3 Jahren

Hallo Abt,
danke für deine schnell Reaktion. Ich hab's aber noch nicht ganz kapiert, deshalb formulier ich es nochmal anders:

Wenn ich eine Klasse über ein Interface verwenden will, so muss ich doch in dieser Klasse das Interface bekannt machen, also


    public class Class : Interface
    {
          ...
    }

Mein Problem ist aber, dass dieses Interface komplett woanders liegt, weil die Klasse als dll zur Verfügung gestellt werden soll, d.h. die Klasse weis nix von dem Interface.

Wie kann ich denn meiner Klasse dem Interface bekanntmachen?

Gruß
Frank

16.806 Beiträge seit 2008
vor 3 Jahren

Du kannst das Interface nur verwenden, wenn Du es der Klasse bekannt machst.
Und dazu musst Du die entsprechende DLL referenzieren.

Ich verstehe aber nicht wo das Problem ist, dass das Interface in einer anderen DLL liegt.
So funktioniert doch das ganze .NET Ökosystem: ich verwende doch auch Framework-Interfaces in meinem Code und die liegen doch auch in anderen DLLs.
Wo genau ist denn nun das konkrete Problem?

Kannst Du es nicht referenzieren oder willst Du nicht?