Die Verbindung zu COM-events in C# - Unterstützung für verwaltete und nicht verwaltete Server

Ich bin das schreiben von C# - code, der Verbindung von COM-Ereignissen. Ich habe implementiert die Verwendung von
Schnittstellen IConnectionPointContainer und IConnectionPoint so:

      IConnectionPointContainer connectionPointContainer = internalGenerator as IConnectionPointContainer;
      if (connectionPointContainer == null)
      {
        Debug.Fail("The script generator doesn't support the required interface - IConnectionPointContainer");
        throw new InvalidCastException("The script generator doesn't support the required interface - IConnectionPointContainer");
      }
      Guid IID_IScriptGeneratorEvents = typeof(IScriptGeneratorCallback).GUID;
      connectionPointContainer.FindConnectionPoint(ref IID_IScriptGeneratorEvents, out m_connectionPoint);
      m_connectionPoint.Advise(this, out m_cookie);

Das problem ist, dass wenn der COM-server implementiert .Net (also C#), nach .Netto schafft es, verarbeitet es als ein .Net-Objekt, nicht ein COM-Objekt. Da die .Net-Objekt ist nicht implementiert, die IConnectionPointContainer-Schnittstelle, bekomme ich null wenn Sie versuchen, zu werfen das Objekt an die Oberfläche.

Irgendeine Idee, wie kann ich dies umgehen?
Ich kann natürlich IConnectionPointContainer implementieren von mir in der C# COM server, jedoch möchte ich eine einfachere Lösung, die ich kann leicht erklären, um anderen Entwicklern die Notwendigkeit der Umsetzung der COM-server.

P. S muss ich verwenden, IConnectionPointContainer als COM-server implementiert werden kann, in non-.Net (C++, Java).

Dank,
Inbar

InformationsquelleAutor Inbar Shani | 2008-11-12

Schreibe einen Kommentar