Anzeige

.net Dll als Com benutzen


#1
Hallo Leute,

ich bin dabei eine DLL mit C# zu entwickeln aber in Delphi zu nutzen :)
Ich habe mich schon schlau gelesen, dass ich diese Dll, ComVisible machen soll :)

Jetzt habe ich nur einige Verständnisfragen:
1) Wenn ich unter Projekt > Eigenschaft > Anwendung auf den Button Assemblyinformationen klicke und dort den hacken auf Assembly COM-sichtbar machen aktiviere und speichere und die entsprechende GUID über meine Klasse packe:
[Guid(GUID aus der AssemblyInfo.cs)]
public class MyClass : IMyClass

Ist das so richtig oder muss ich eine komplett neue GUID erstellen?
2) Ich habe in meinem projekt eine .cs-Datei hier ist einmal das Interface IMyClass und die Klasse MyClass enthalten, in der IMyClass stehen die Methoden von der Klasse, habe ich so von hier: http://jumbloid.blogspot.de/2009/12/making-net-dll-com-visible.html Muss jetzt über dem Interface IMyClass eine GUID generiert werden:
[Guid(GUID andere als die von AssemblyInfo.cs)]
public Interface IMyClass

Ist der Aufbau auch so richtig?
3) Zudem habe ich über dem Interface und Klasse weitere COM-Modis eingestellt:
Interface:
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid(GUID andere als die von AssemblyInfo.cs)]
public Interface IMyClass
Klasse:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid(GUID aus der AssemblyInfo.cs)]
public class MyClass : IMyClass

habe ich den Aufbau so Richtig gemacht?

Ich möchte nämlich nicht das es bei Delphi zu Fehler wie Klasse nicht registiert oder ID falsch etc.
Denn im Endeffekt werde nicht ich (leider) in Delphi arbeiten sondern ein Kumpel von mir.

Ich hoffe Ihr könnt mir helfen.

LG
 

Spyke

Capoeirista
Premium-User
#2
Hab nicht so die Erfahrung in COM und genauer müsst ich auf Arbeit mal nach schauen.

Aber schau dir mal noch zusätzlich vielleicht den Artikel auf codeproject an:
http://www.codeproject.com/Articles/7859/Building-COM-Objects-in-C
da siehst du zum Beispiel das mehrere unterschiedliche GUIds vergeben werden und so sollte es eigentlich auch sein.
Die COM DLL wird ja später registiert und die GUIDs landen in der registry.
 
Zuletzt bearbeitet:
Anzeige
Anzeige