Casting-Problem

05/01/2008 - 18:12 von Kristian Reukauff | Report spam
Hi zusammen:
Ich habe folgendes gegeben:
public class field
{...}
public class cfield:field
{
int _x = -1;
Public X
{
get{...}
set{...}
}
}

jetzt würde ich gerne folgendes machen:
varcfield = (cfield)varfield;

Wenn ich das jedoch machen will, bekomme ich folgenden Fehler:
InvalidCastException was unhandled by user code:
{"Das Objekt des Typs field kann nicht in Typ cField umgewandelt werden."}

Ich verstehe nicht, warum das nicht gehen soll. Schließlich beinhaltet field
doch nur Werte, die cField auch kennt.
Hat jemand Ahnung warum das nicht geht und wie man das Problem löst?
Die ganzen Werte manuell übergeben ist keine Lösung, da es zu viele sind und
stàndig neue hinzu kommen.
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
05/01/2008 - 18:23 | Warnen spam
Hallo Kristian!

"Kristian Reukauff" schrieb:
Ich habe folgendes gegeben:
public class field
{...}
public class cfield:field
{
int _x = -1;
Public X
{
get{...}
set{...}
}
}

jetzt würde ich gerne folgendes machen:
varcfield = (cfield)varfield;

Wenn ich das jedoch machen will, bekomme ich folgenden Fehler:
InvalidCastException was unhandled by user code:
{"Das Objekt des Typs field kann nicht in Typ cField umgewandelt werden."}

Ich verstehe nicht, warum das nicht gehen soll. Schließlich beinhaltet
field doch nur Werte, die cField auch kennt.



Wenn B Untertyp von A, dann gilt, daß Objekte des Typs B auch vom Typ A sind
("is-a"-Beziehung), aber nicht umgekehrt.

Ohne Dein Szenario genauer zu erkennen, ist es unmöglich, eine Lösung
vorzuschlagen.

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen