Autor Beitrag
pascalsv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
BeitragVerfasst: Mo 09.02.09 17:00 
Hallo zusammen,

ich arbeite mit zwei Klassen gleicher Struktur, ModelA und ModelB. Die eine brauche ich für die externe Kommunikation, die andere nutze ich intern. Da die Struktur gleich ist, ist Klasse ModelA von ModelB abgeleitet. Die Strukturen ebenfalls. So besteht Klasse ModelA unter anderem aus der Klasse AEntry, die von der Klasse BEntry abgeleitet ist. Wenn ich jedoch Klasse ModelA in Klasse ModelB casten will, erhalte ich eine Fehlermeldung:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
    public class ModelA : DataTypesA
    {
        public AEntry[] AEntriesList { get; set; }
    }
***
    public class ModelB : DataTypesB
    {
        public BEntry[] BEntriesList { get; set; }
    }
***
    this.ModelA.AEntriesList = (AEntry[])ModelB.BEntriesList;


Was mache ich falsch?

Danke!!
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 09.02.09 17:19 
user profile iconpascalsv hat folgendes geschrieben Zum zitierten Posting springen:
Was mache ich falsch?

Du verschweigst vor allem die Fehlermeldung.

user profile iconpascalsv hat folgendes geschrieben Zum zitierten Posting springen:
ich arbeite mit zwei Klassen gleicher Struktur, ModelA und ModelB.

Die Klassen haben offensichtlich nicht die gleiche Struktur, weil sie unterschiedliche Arrays enthalten.

user profile iconpascalsv hat folgendes geschrieben Zum zitierten Posting springen:
Da die Struktur gleich ist, ist Klasse ModelA von ModelB abgeleitet.

Auch das stimmt nicht. Klasse ModelA ist von DataTypesA abgeleitet, Klasse ModelB von DataTypesB abgeleitet; einen Zusammenhang dieser Typen kann ich nicht erkennen. Deshalb ist ein cast von ModelA in ModelB oder umgekehrt nicht möglich.

Anscheinend willst Du außerdem das Array konvertieren, nicht die Klassen selbst.
user profile iconpascalsv hat folgendes geschrieben Zum zitierten Posting springen:
... unter anderem aus der Klasse AEntry, die von der Klasse BEntry abgeleitet ist.

Dann kannst Du von AEntriesList nach BEntry[] konvertieren, aber nicht umgekehrt (wie Du es willst). (Ich nehme jedenfalls an, dass die Vererbung einer Klasse sich auch auf Arrays dieser Klasse übertragen.)

Du musst also wohl den Zusammenhang Deiner Klassen nochmal überarbeiten. Jürgen
pascalsv Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
BeitragVerfasst: Mo 09.02.09 17:44 
Hi Jürgen,

wenn AEntry von BEntry abgeleitet ist, warum kann ich dann nicht den Inhalt von BEntry AEntry zuweisen?

Ich erhalte zur Laufzeit den Fehler: System.InvalidCastException: Das Objekt des Typs BEntry[] kann nicht in Typ AEntry[] umgewandelt werden.

Beim Kompilieren scheint alles in Ordung zu sein, wenn ich
ausblenden C#-Quelltext
1:
AEntry[] = (AEntry[])BEntry[];					

ausführe.

Danke!
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 09.02.09 17:50 
Du beantwortest dir deine Frage selbst:
AEntry ist von BEntry abgeleitet also kannst du nur einer BEntry-Variable einen AEntry Wert zuweisen und nicht andersrum.
pascalsv Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133

Win XP Prof. SP2 / Windows 7
Visual Studio 2008 / Silverlight 3 / Silverlight 4 Beta
BeitragVerfasst: Di 10.02.09 09:29 
Aaaaargh,

ihr habt ja recht. Vielen Dank!!!

Habe es mir heute morgen noch einmal angesehen und schon fällt es mir wie Schuppen aus den Haaren.... ;-)