Avatar billede tigertool Nybegynder
20. august 2006 - 00:44 Der er 4 kommentarer og
1 løsning

Arv og ClassCast

Hej,

Jeg har 2 klasser:

public class Person
{
    private string name;

    protected Person(string name)
    {
        this.name = name;
    }

    public string Name
    {
        get {return name;}
    }

    protected static Person DBFindByName(string name)
    {
        ..... Noget kode der finder personen i databasen .....
    }
}

public class Customer : Person
{
    public Customer(string name) : base (name)
    {
    }
   
    public static Customer FindByName(string name)
    {
        return (Customer) DBFindByName(name);
    }
}


Hvis jeg forsøger at benytte Customer.FindByName("test") får jeg:
Unhandled Exception: System.InvalidCastException: Specified cast is not valid.

Hvad gør jeg forkert?
Avatar billede arne_v Ekspert
20. august 2006 - 01:07 #1
du kan ikke caste en Person til en Customer

forestil dig at Customer havde nogle felter som Person ikke havde - de ville jo mangle
Avatar billede arne_v Ekspert
20. august 2006 - 01:10 #2
enten en bedre objekt model

eller så må FindByName først lave en lave en DBFindByName og så en new Customer
og flytte data over
Avatar billede tigertool Nybegynder
20. august 2006 - 15:23 #3
Du har sku ret - det burde jeg have sagt mig selv i nat :(

Jeg lavede en:

public static ToCustomer(Person person)
{
....  overfør data mellem de 2 objekter ....
}

grimt - men det virker.
Avatar billede tigertool Nybegynder
20. august 2006 - 15:26 #4
Arne -> smid et svar.
Avatar billede arne_v Ekspert
20. august 2006 - 15:37 #5
svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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

IT-JOB