![]() |
[Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Hallo zusammen,
ich habe für mein Programm ![]() ![]() Da ich aber C# nicht so gut kenne wie Delphi ist meine erste Frage, ob ich das jetzige ![]() Reicht Visual C# Express für die Übersetzung völlig aus oder brauche ich eine höhere Version ? |
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Deine Interfaces nutzen Register als Aufrufskonvention, IOW die wohl mit Abstand schlechteste Wahl, die du hättest nehmen können.
Damit kannst natürlich alle Compiler außer Delphi, BCB und FPC vergessen. Fix das lieber solange es noch geht. Außer es gibt schon zu viele nicht mehr aktiv gepflegte Plugins für dein Programm. ![]() |
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Hallo Robert,
irgendwie verstehe ich Deinen Post noch nicht. Ich glaube, ich habe da noch Nachholbedarf was Interfaces angeht. Ich habe mir den Thread aus Deinem Link durchgelesen, aber so richtig verstanden habe ich es nicht. Kannst Du es mir vielleicht anhand eines kleinen Beispiels erklären bitte. Mein Verständnis von Interfaces war bis jetzt, dass ich damit eine externe Schnittstelle für ein Programm schaffen kann um zum Beispiel PlugIns zuzulassen. Zitat:
|
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Zitat:
Da das Problem natürlich überall aufgetaucht ist, haben sich Konventionen gebildet (ja, Plural) und Pascal hatte eben eine andere als C. Die von pascal heißt register, die von C heißt stdcall. Pascal kann auch Funktionen erzeugen die sich an die stdcall-Konvention halten, die müssen aber gekennzeichnet werden. Umgekehrt kann C keine Funktionen erzeugen oder aufrufen, die sich an die register-Konvention halten. Ergo: Die interfaces ermöglichen zwar Plugins. Da du aber keine Konvention explizit geschrieben hast, nimmt der Delphi-Compiler register als Aufrufkonvention. Da er das tut, kannst du diese Funktionen wieder nur aus Pascalcode aufrufen. Die Plugins müssen also zwangsläufig in Pascal geschrieben sein! |
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Zitat:
![]() |
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Zitat:
Sorry, aber ein taugliches Plugin-System kann ich für .NET in 10 Minuten herzaubern und habe das schon mehrfach gemacht. Wieso sollte man dazu ein SDK nutzen? Assembly laden, bestimmte für das Plugin-System definierte Interfaces mit Reflection rausziehen und go. Dazu braucht man nicht mehr als die Hausmittel liefern, und alles andere geht vermutlich stark am eigenen Use-Case vorbei. |
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Zitat:
|
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Ja, Du musst nur eine C#-Klasse erstellen, die dein COM-Interface implementiert.
![]() |
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Zitat:
|
AW: [Delphi/C#] Eigenes PlugIn System übersetzen nach C#
Na, ich glaube er meint: Deklariere dein IPlugin-Interface, erzeuge ein paar DLL mit jeweils einer Klasse, die das IPlugin-Interface implementieren, schmeiss die DLL in ein Verzeichnis und zum dynamischen laden lädst Du die Assemble und fragst mit Reflection, ob die exportierte Klasse in der DLL das IPlugin-Interface implementiert.
Code:
...
Assembly assembly = Assembly.LoadFile(fullFilename); foreach (Type type in assembly.GetTypes()) if (type.IsClass && type.IsPublic) if (type.GetInterfaces().Contains(typeof(IPlugin))) // type ist eine Plugin-Klasse und kann jetzt verwendet werden. ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz