Laden...

COM-Interop und eigene Klassen als Parameter

Erstellt von deadcantdance vor 14 Jahren Letzter Beitrag vor 14 Jahren 842 Views
D
deadcantdance Themenstarter:in
12 Beiträge seit 2007
vor 14 Jahren
COM-Interop und eigene Klassen als Parameter

Hi,

ich beschäftige mich gerade mit COM-Interop. Klappt soweit auch ganz gut, jedoch möchte ich einer Methode eine von mir definiterte Klasse als Parameter übergeben.

Nachdem ich die .tlb-Datei dann in Delphi importiert habe, sehe ich zwar die eigene Klasse, kann aber nicht auf die Properties zugreifen.

Das Interface und die implementierende Klasse sind korrekt sichtbar, nur eben die Properties der Parameterklasse nicht.

So ist die Parameterklasse im C#-Code:

[ComVisible(true)]
public class Abbild
{
    public long ID { get; set; }
    public string Name { get; set; }
}

Was mache ich denn falsch? Danke im Voraus für Eure Hilfe!

Gruß,
deadcantdance

95 Beiträge seit 2006
vor 14 Jahren

Hallo,

du musst den Parameter vom Typ der Schnittstelle definieren.

Garby

Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)

D
deadcantdance Themenstarter:in
12 Beiträge seit 2007
vor 14 Jahren

Kannst Du mir das etwas genauer erklären?

Interface sieht so aus:

[ComVisible(true)]
[Guid("EEE6E8B9-CE26-4a6e-B1C5-1ADC83E3E590")]
public interface IValueType
{
    void M1(System.DateTime d);
    void M2(System.Guid d);
    void M3(System.Decimal d);
    void M4(Abbildb A);
}

Die implementierende Klasse so:

[ComVisible(true), ClassInterface(ClassInterfaceType.None), Guid("BA00CF2C-C530-4e05-A899-1260CBA73554")]
public class IValueTypeImpl : IValueType
{

    public void M1(DateTime d)
    {
    }

    public void M2(Guid d)
    {
    }

    public void M3(decimal d)
    {
    }

    public void M4(Abbildb A)
    {
    }

}
95 Beiträge seit 2006
vor 14 Jahren

Hi,

ich würde eine Schnittstelle IAbbildb definieren und den Parameter vom Typ IAbbildb deklarieren.

Garby

Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)

D
deadcantdance Themenstarter:in
12 Beiträge seit 2007
vor 14 Jahren

Danke, läuft 👍