Hallo Gemeinde!
Nur eine 'kurze' Frage.
Ist es möglich für C# COM-Objekte bereitzustellen (entwickelt in C++/ATL), welche NICHT instantiierbar sind, dennoch denen Events (in C#) hinzufügen kann bzw. unterstützen?
Klingt jetzt vielleicht verwirrend :)
Vielleicht wird es mit etwas Beispielcode klarer.
Bei 'öffentlichen' COM-Klassen/Objekten, funktioniert das ja alles prima solange in der .IDL die Klasse als coclass angelegt wurde.
coclass Sample
{
[default] interface ISample;
[default, source] dispinterface _ISampleEvents;
};
Von der Klasse Sample kann in C# schön Objekte anlegen und den Eventhandlern Events hinzufügen.
Jetzt soll die Klasse 'Sample' allerdings selbst intern ein Objekt anlegen und an den Aufrufer (C#) zurückgeben (nennen wir es mal 'Configuration'). Soweit klappt ja aller wunderbar. Die Eigenschaften eines Konfigurationsobjekts können angesprochen und gesetzt
werden und nicht direkt in C# angelegt werden (da nur als Interface in der IDL definiert).
JETZT soll die Klasse Konfiguration allerdings AUCH Ereignisse anbieten (z.B. Updated). Aber auf der C#-Seite wird das Ereignis nicht als Ereignis erkannt, außer wenn ich auch die Klasse 'Konfiguration' als coclass definiere, was ich aber eigentlich vermeiden
möchte, die diese nicht direkt angelegt werden soll.
Irgendwelche Tipps, Lösungen oder Links für mich?
Vielen Dank!