Entwickler-Ecke

C# - Die Sprache - Klassen zuweisen


John Sanson - Mi 31.10.07 13:16
Titel: Klassen zuweisen
Hallo.

Ich habe 2 Klassen. Beide erben von einem Interface, das bedeutet in meinem Fall, dass beide Klassen die Eigenschaften aus dem Interface (Vorname,Nachname) und ihre eigenen Eigenschaften haben. Jetzt würde ich gern sagen:
Klasse1 = Klasse2. Beider dieser Zuweisung sollen nur die aus dem Interface stammenden Properties zugewiesen werden.
Natürlich geht es auch Klasse1.Vorname = Klasse2.Vorname usw., so soll es aber nicht sein.

Danke schonmal im vorraus.

Chris


UGrohne - Mi 31.10.07 14:31
Titel: Re: Klassen zuweisen
user profile iconJohn Sanson hat folgendes geschrieben:
Hallo.

Ich habe 2 Klassen. Beide erben von einem Interface, das bedeutet in meinem Fall, dass beide Klassen die Eigenschaften aus dem Interface (Vorname,Nachname) und ihre eigenen Eigenschaften haben. Jetzt würde ich gern sagen:
Klasse1 = Klasse2. Beider dieser Zuweisung sollen nur die aus dem Interface stammenden Properties zugewiesen werden.
Natürlich geht es auch Klasse1.Vorname = Klasse2.Vorname usw., so soll es aber nicht sein.

Danke schonmal im vorraus.

Chris

Mach doch einen Typecast mit dem Interface, dann hast Du immer noch die Ursprungsklasse, aber die Eigenschaften sind korrekt. Oder was willst Du genau erreichen?


John Sanson - Mi 31.10.07 15:04

Ich habe verschiedene Klassen mit teilweise gleichen Eigenschaften (die aus dem Interface) und immer diese sollen zugewiesen werden.

Ich habs anfangs mit Klass1 = (ITest)Klasse2 probiert und auch ohne Casting...aber irgenwie hänge ich grad.

Wie meinst du das genau mit dem Interface Casting?


UGrohne - Mi 31.10.07 15:30

user profile iconJohn Sanson hat folgendes geschrieben:
Ich habe verschiedene Klassen mit teilweise gleichen Eigenschaften (die aus dem Interface) und immer diese sollen zugewiesen werden.

Ich habs anfangs mit Klass1 = (ITest)Klasse2 probiert und auch ohne Casting...aber irgenwie hänge ich grad.

Wie meinst du das genau mit dem Interface Casting?

Das was Du gemacht hast, ist ja ein Type Cast mit einem Interface. Wenn Du die Eigenschaften in eine komplett neue Objektinstanz übernehmen willst, musst Du Dir selbst eine Methode dafür schreiben, denn Du kopierst ja Informationen. Am Besten also eine Basisklasse schreiben, die das Interface implementiert und dort die Eigenschaften des Interfaces in einer statischen Methode von einer Instanz des Interfaces in eine andere kopieren.


John Sanson - Mi 14.11.07 12:22

Moin hab jetzt eine gute Lösung bei meinem Problem gefunden...eigentlich bei der Suche nach einer anderen Lösung.
Jedenfalls habe ich meinen Klassen implicit und explicit Converting Methoden eingebaut. Nun kann ich alles zuweisen. Per Extension Methods müsste das auch mit mit bereits im Framework enthaltene Klassen funktionieren.

Grüße
Chris


Kha - Mi 14.11.07 17:02

Ich weiß ja nicht, wie deine Klassenstruktur genau aussieht, aber sicher, dass es nicht eine bessere Lösung gibt? Klonen von Objekten macht nur in sehr seltenen fällen Sinn und teilweises Klonen erst recht. Deine Beschreibung hört sich eher danach an, dass man die gemeinsamen Daten in eine eigene Klasse auslagern sollte, deren Objekt dann von beiden Objekten referenziert werden kann. Wie gesagt, nur Spekulationen ;) .