Frage

Ich habe einen WCF-Dienst, bei dem ich einige Datenverträge haben. Ich bin mit Web-Service-Software-Fabrik, die einen Designer nutzt alle die Nachricht und Daten und andere Verträge zu erstellen, und es schafft, sich als Teilklassen. Wenn der Code regeneriert die Klassen neu erstellt werden.

using WcfSerialization = global::System.Runtime.Serialization;

[WcfSerialization::CollectionDataContract(Namespace = "urn:CAEService.DataContracts", ItemName = "SecurityItemCollection")]
public partial class SecurityItemCollection : System.Collections.Generic.List<SecurityItem>
{
}

Der Datenvertrag ist eine generische Liste einer benutzerdefinierten Klasse, die fein gearbeitet. Allerdings möchte ich jetzt eine Eigenschaft dieser Klasse hinzuzufügen, so dass ich diese partielle Klasse im gleichen Namensraum hinzugefügt:

public partial class SecurityItemCollection
{
    public int TotalRecords { get; set; }
}

Das scheint gut funktionieren auf der Serviceseite, aber wenn wir kompilieren und dann vom Client den Dienstverweis aktualisieren, wird die Klasse nicht die neue Eigenschaft, dh, wenn es sie serialisiert und erschafft es auf der Client-Seite, es ist die neue Eigenschaft fehlt. Wer weiß, warum das so ist?

TIA

EDIT: Ok das ist offiziell mich verrückt. Das einzige, was ich sehen kann, ist, dass es das CollectionDataContract Attribut anstelle von Datacontract verwendet. Enthält diese serialisiert werden irgendwie nicht Datenelemente in der Klasse erlauben? Warum wäre das? Es funktioniert gut auf der Serviceseite - ich kann die Werte kein Problem sehen und füllen. Allerdings, wenn ich den Dienst refernce auf meinem Client-Update gibt es nichts, nur die colelction Klasse ohne Datenelement.

War es hilfreich?

Lösung 2

Ok nach langem Suchen endlich fand ich heraus, dass dies nicht das heißt Klassen markiert als CollectionDataContract darf keine Daten Mitglieder haben. Warum ist dies habe ich keine Ahnung, aber es kostet mich mehrere Stunden und einen großen Kopfschmerzen. Siehe unten stehende Link:

WCF CollectionDataContract und Datamember

Andere Tipps

Versuchen Sie, die Datamember-Attribut auf die totalrecords Eigenschaft hinzufügen

Ich weiß, das ist alt, aber es kam immer, wenn ich zu diesem Thema gesucht. Ich konnte diese Funktion erhalten, indem ein „Datamember“ Attribut der Eigenschaft hinzufügen. Unten ist ein Codebeispiel.

public partial class SecurityItemCollection
{
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public int TotalRecords { get; set; }

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top