Avatar billede mads.rode Nybegynder
06. oktober 2004 - 09:48 Der er 1 løsning

Eksponere min egen ValueType(struct) til COM

Jeg er ved at lave min egen ValueType i C#, denne har jeg brug for at kalde fra COM. Der er dog det problem at den som standard ikke bliver eksponeret korrekt.
Den ser ca. sådan ud, men jeg har dog fjernet en del som bare var gentagelser:

public struct FinVal
{
    private bool _assigned;
    private bool Assigned
    {
        get
        {
            return _assigned;
        }
        set
        {
            _assigned = value;
        }
    }
    private double _vaerdi;
    public double Vaerdi
    {
        get
        {
            if(Assigned)
                return _vaerdi;
            else
                throw new Exception("Vaerdien er ikke sat!: " + this.GetType().TypeInitializer.Name);
        }
        set
        {
            Assigned = true;
            _vaerdi = value;
        }
    }
    public static FinVal operator + (FinVal val1, FinVal val2)
    {
        return new FinVal( val1.Get(val1.ValutaKode) + val2.Get(val1.ValutaKode), val1.ValutaKode);
    }
    .....
    public static explicit operator int(FinVal val)
    {
        return (int)val.Vaerdi;
    }
    public static implicit operator FinVal(int val)
    {
        return new FinVal(val, ValutaHandler.eValutaKode.DKK);
    }
    .....
}

Når jeg så f.eks. prøver at bruge den fra delphi, for jeg ikke andet end 2 variabler nemlig _assigned og _vaerdi, og det er ikke muligt at initialisere dem hverken ved at sætte værdien direkte eller via de operator overloads som jeg har lavet.

Nogen som kan hjælpe?
Avatar billede mads.rode Nybegynder
29. april 2006 - 15:25 #1
Luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester