Avatar billede mike@work Praktikant
18. maj 2006 - 15:53 Der er 13 kommentarer og
1 løsning

Nested Class'

Hejsa,

Hvordan gør man følgende.

Jeg har en Class - Vi kunne kalde den "Car" - i den class er der en række methods og properties, som f.eks. Car.Brand eller Car.Model eller måske Car.Engine.

Men hvis jeg f.eks. laver en slags subclass - F.eks. Car.RegDate.Month (DateTime er f.eks. ikke godt nok)
Car.Fuel.Type
Car.Fuel.Capacity

Jeg ved ikke hvordan jeg ellers lige skal forklare det.

Jeg er ikke sikker på at "Nested Class" er passende, for det dækker over at jeg hard-coder min "sub"-class ind i min primær class.

Håber I kan hjælpe mig !
Avatar billede mike@work Praktikant
18. maj 2006 - 16:01 #1
Meningen er at hver class skal ligge i sin egen CS fil... Derfor er nested ikke en god fremgangsmåde !
Avatar billede arne_v Ekspert
18. maj 2006 - 16:08 #2
hvad er problemet egentligt

hvis Car.Fuel property/objekt har en Type property saa er Car.Fuel.Property
jo validt helt automatisk
Avatar billede mike@work Praktikant
18. maj 2006 - 16:15 #3
jeps... Det var også min tanke - Her er præsic hvad jeg har gjort:

public class Vehicle
{
    public Vehicle() {}

    private string gBrand;
    private string gModel;
    private string gEngine;

    public string Brand
    {
        get { return gBrand; }
        set { gBrand = value; }
    }

    public string Model
    {
        get { return gModel; }
        set { gModel = value; }
    }

    public string Engine
    {
        get { return gEngine; }
        set { gEngine = value; }
    }

    public MVADate RegDate;

    public string ProduceName()
    {
        string result = gBrand + " " + gModel + " " + gEngine;
        return result;
    }
}


public class MVADate
{
    public MVADate() { }

    private int pDay;
    private int pMonth;
    private int pYear;

    public int Day {
        get { return pDay; }
        set { pDay = value; }
    }

    public int Month {
        get { return pMonth; }
        set { pMonth = value; }
    }

    public int Year {
        get { return pYear; }
        set { pYear = value; }
    }

    public string ProduceDate() {
        return pDay + "/" + pMonth + "/" + pYear;
    }

}


--- OG MIN KODE ---

        Vehicle MyCar = new Vehicle();
       
        MyCar.Brand = "Opel";
        MyCar.Model = "Vectra";
        MyCar.Engine = "1.8 16V";

        MyCar.RegDate.Day = 5;
       
        Response.Write(MyCar.ProduceName() + "<br />");

Men så får jeg følgende fejl: System.NullReferenceException: Object reference not set to an instance of an object.
Avatar billede mike@work Praktikant
18. maj 2006 - 16:23 #4
Ved linjen MyCar.RegDate.Day = 5; !
Avatar billede arne_v Ekspert
18. maj 2006 - 16:24 #5
MyCar.RegDate = new MVADate();
MyCar.RegDate.Day = 5;
Avatar billede arne_v Ekspert
18. maj 2006 - 16:25 #6
evt.

public MVADate RegDate = new MVADate();
Avatar billede arne_v Ekspert
18. maj 2006 - 16:26 #7
hvorfor bruger du ioevrigt ikke property til den ?
Avatar billede mike@work Praktikant
18. maj 2006 - 16:38 #8
Tell me more ?!
Avatar billede arne_v Ekspert
18. maj 2006 - 16:50 #9
om ?
Avatar billede mike@work Praktikant
18. maj 2006 - 16:51 #10
hvorfor bruger du ioevrigt ikke property til den ?
Avatar billede arne_v Ekspert
18. maj 2006 - 17:03 #11
private MVADate gRegDate;

    public MVADate RegDate
    {
        get { return gRegDate; }
        set { gRegDate = value; }
    }
Avatar billede mike@work Praktikant
18. maj 2006 - 19:36 #12
Lækkert ;o)

Dette virker efter hensigten:

private MVADate gRegDate = new MVADate();

    public MVADate RegDate
    {
        get { return gRegDate; }
        set { gRegDate = value; }
    }

Så kan den modtag og sende data på korrekt vis - Tak for hjælpe !
Avatar billede mike@work Praktikant
18. maj 2006 - 19:36 #13
Så kan du lige lave et svar, så du kan få dine point !
Avatar billede arne_v Ekspert
18. maj 2006 - 20:07 #14
kommer her
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

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