Es kommt auf die Art des Klonens an, das Sie wünschen. Wenn Sie flaches Klonen wollen, ist es einfach genug. Durchlaufen Sie die Eigenschaften des Objekts und legen Sie sie auf dem Klon fest. Das bedeutet jedoch, dass Eigenschaften, die Referenzen enthalten, dasselbe Objekt sowohl für die Quelle als auch für den Klon referenzieren.
Wenn Sie einen tiefen Klon wollen, müssen Sie eine Möglichkeit finden, auch Referenzen zu kopieren, die dem Quellobjekt gehören (und Referenzen, die den Referenzen gehören, die der Quelle gehören, usw. usw.). Dies ist möglicherweise nicht automatisch möglich, wenn diese Referenzen keine Standardkonstruktoren haben.
Worauf es hinausläuft ist, dass nach meiner Erfahrung, wenn Sie eine nicht-triviale Klasse und/oder Klassenhierarchie haben (insbesondere mit der Möglichkeit der nicht vorhandenen Standardkonstruktoren), der einfachste, zuverlässigste Weg ist um entweder einen "Copy Constructor" zu schreiben (was in .NET als solcher nicht existiert), und die Arbeit selbst zu machen, implementieren Sie ICloneable
, und führen Sie die Arbeit selbst aus, oder implementieren Sie Ihre eigene Art von Clone-Methode und erledigen Sie die Arbeit sich selbst;)
möglich Duplikat von [Wie Wert von Klasse X Klasse Y kopieren mit dem gleichen Name der Eigenschaft in C#?] (http://stackoverflow.com/questions/531505/how-to-copy-value-from-class-x-to-class-y-with-the-same-property-name-in -c) –