Frage

Ich habe eine C # Klassenbibliothek erstellt und ich verwende es durch eine VB 6.0-Anwendung. Aber wenn ich versuche, jede Methode aufrufen (die einen String zurückgibt) es gibt mir ein Automatisierungsfehler. Die C # Klasse läuft ansonsten in Ordnung.

Jede Idee, warum?

War es hilfreich?

Lösung

Wie fbinder sagt, sollten Sie stark Ihre Montage unterzeichnen, und einige Attribute verwenden. Die Eigenschaften, die wir (erfolgreich) verwenden sind:

[ComVisible( true )]
[ClassInterface( ClassInterfaceType.None )]
[Guid( "00000000-0000-0000-0000-000000000000" )]
[ComDefaultInterface( typeof( IExposedClass ) )]
public class ExposedClass : IExposedClass
{
    //need a parameterless constructor - could use the default
    public ExposedClass() { }

    public string GetThing()
    {
        return "blah";
    }
}

[ComVisible( true )]
[Guid( "00000000-0000-0000-0000-000000000000" )]
[InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface IExposedClass
{
    string GetThing();
}

Andere Tipps

Sie sollten stark Ihre Klassenbibliothek anmelden, registrieren Sie es mit regasm und setzen diese vor Ihrer Klassendefinition:

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("Class GUID")]

Außerdem sollten Sie eine Schnittstelle definieren die gewünschten Methoden aufzudecken. Die Schnittstelle sollte die Attribute haben:

 [Guid("Interface GUID")]
 [ComVisible(true)]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top