Mam obiekt pewnej klasy i chce zaimplementować w nim metodę Clone która kopiuje wszystkie property z jednego obiektu do drugiego. Teraz widzę trzy podstawowe sposoby:
//1:
Class Klasa
{
public void Clone(Klasa source)
{
this.prop1 = source.prop1;
this.prop2 = source.prop2;
}
}
//2:
Class Klasa
{
public void Clone(Klasa target)
{
target.prop1 = this.prop1;
target.prop2 = this.prop2;
}
}
//3:
Class Klasa
{
public static void Clone(Klasa source, Klasa target)
{
target.prop1 = source.prop1;
target.prop2 = source.prop2;
}
}
Wywołania oczywiście:
1: Target.Clone(Source)
2: Source.Clone(Target)
3: Klasa.Clone(Source, Target)
Który sposób jest najbardziej przejrzysty i właściwy?