Ich habe ein Array und Typ wie;ToArray() Methode klont alle Instanzen als letzte
List<ContractListType> ContractsList = new List<ContractListType>();
ContractListType instance = new ContractListType();
Ich füge 4 Elemente meiner ContractsList 4 von
If a == 1
instance.name = "A"
ContractsList.Add(instance);
If b == 1
instance.name = "B"
ContractsList.Add(instance);
If c == 1
instance.name = "C"
ContractsList.Add(instance);
If d == 1
instance.name = "D"
ContractsList.Add(instance);
Und schließlich möchte ich mit Antwort meiner Liste übereinstimmen.
response.GetContractListResponse.GetContractListResponseDTO.ContractListType = ContractsList.ToArray();
Obwohl a = 1, b = 2, c = 3, d = 4; meine Antwort kommt wie
<name>D</name>
<name>D</name>
<name>D</name>
<name>D</name>
Wenn ich debuggen, bevor Antwort, die ich alle Namen in conractsList sehen kann, aber wenn ToArray läuft, alle Namen zu „D“ umwandeln, die letzte ist.
Ich konnte keine Lösung finden. Hilf mir bitte.
Ich sehe Sie, aber nicht wissen, wie man Objekt klonen und seine Eigenschaft vor dem Hinzufügen zu Liste ändern. Kannst du bitte ein Beispiel geben? – Gyepesto
Erstellen Sie einen neuen Konstruktor, der einen Parameter des gleichen Typs aufnimmt und über die Eigenschaften kopiert. Beachten Sie, dass Eigenschaften, die Referenztypen (Klassen) sind, auch eigene Klone benötigen. –
@Gyepesto gibt es keine generische Möglichkeit, ein Objekt in .NET zuverlässig zu klonen. Normalerweise müssen Sie eine benutzerdefinierte '.Clone()' Methode im Objekt bereitstellen oder sie manuell an der Stelle rekonstruieren, an der Sie sie benötigen, wie Babak gezeigt hat (die '.Clone()' Methode enthält normalerweise nur den Code, den Sie gemacht hätten die "von Hand" -Methode und nur das resultierende "neue" Objekt zurückgeben.). –