Frage

Wir arbeiten mit einer vorhandenen nativen Anwendung (höchstwahrscheinlich in VB geschrieben), die Baugruppen und ruft Methoden mit lädt „Late Binding.“ Wir haben keinen Zugriff auf den Quellcode.

Wir wollen diese Schnittstelle in C # implementieren und haben die native Anwendung unserer C # Montage nennen.

Ist das etwas, das ist möglich?

Ist das alles, was wir über Anpassung der Methodennamen und Methodensignaturen zu tun, damit es funktioniert?

War es hilfreich?

Lösung 2

Dies sind die Schritte erforderlich, damit es funktioniert:

  1. Markieren Sie Ihre Klasse [ComVisible (true)], und stellen Sie sicher, dass es ein einzigartiges [Guid] Attribut geben
  2. Ihre ProgId Ihrer Klasse passt, die normalerweise MyNamespace.MyClass ist, aber Sie können ein Attribut auf Klasse hinzufügen, dies auch zu überschreiben
  3. Setzen Sie die richtigen [DispID] Attribute für jede Methode, die
  4. aufgerufen wird
  5. Stellen Sie sich Ihren Montage und Lauf regasm.exe auf die Assembly

Und voila! Native Code können Sie Ihre C # über „späte Bindung“ nennen. Ich, natürlich, hatte mehrere Registrierungsschlüssel, um Setup zu meiner Mutter applciation zu machen wissen, wie meine Assembly zu laden, aber alle funktionieren.

Andere Tipps

Wenn Sie versuchen, der sauberste Weg .NET-Code von VB6 zu nennen wäre der C # -Code als ein COM-Objekt an den VB6-Code erscheinen zu lassen - also ja, müßten Sie Ihren C # -Code als ComVisible markieren und zu gewährleisten, dass es wie die bestehenden COM-Schnittstelle aussieht.

Update: Hier 's ein Artikel erhalten Sie begonnen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top