Laden...

Partial Attribut bei Service Reference

Erstellt von joh.w vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.363 Views
J
joh.w Themenstarter:in
140 Beiträge seit 2006
vor 13 Jahren
Partial Attribut bei Service Reference

Hi,

ich hoffe ich hab das richtige Forum für meinen Problemfall getroffen. Und zwar folgendes: Ich habe einen WCF-Dienst, den ich mir über eine Service Reference in ein Silverlight Projekt rein hole. Der Dienst stellt auch ein paar Collections bereit (generiert als ObservableCollection). Im Silverlight Projekt muss ich die Collection-Klassen ein bisschen erweitern. Dazu habe ich bis jetzt immer die Möglichkeit der partial-classes verwendet.

Funktioniert soweit ganz prächtig, sofern ich das partial Attribut manuell in der Reference.cs in den entsprechenden Collections mit aufnehme (bei normalen Klassen ist dies nicht erforderlich, da wird das partial-Attribut seltsamerweise gleich mitgeneriert).

Meine Frage ist nun: Gibt es einen Weg, wie man das partial-Attribut auch ständardmäßig für Collection-Klassen mit generieren lässt? Wäre eine große Hilfe und würde nach jedem Update der Service Reference etwa 2 Minuten Arbeit sparen.

Gruß
joh.w

G
538 Beiträge seit 2008
vor 13 Jahren

Vielleicht wäre es eine Option die Collection nicht über partial zu erweitern sondern eine eigene abgeleitete Klasse zu generieren, die von dir benötigte Methoden bereitstellt.
Immerhin sind die Collections (korrigiere mich, wenn ich falsch liege) Klassen aus .NET und ich glaube die sollten nicht mit partial erweitert werden.

Es könnte natürlich sein, dass du bereits eine eigene Collection aus deinem Service zurückgibst, dann solltest du vielleicht darüber nachdenken, ob das für den Datentransport überhaupt notwendig ist.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

J
joh.w Themenstarter:in
140 Beiträge seit 2006
vor 13 Jahren

Im Grunde genommen sind es auf der Serverseite "eigene Collections" die von Collection<T> abgeleitet sind. Juckt aber nicht allzu sehr, da mir ja auf Client-Seite der Proxy komplett neu generiert wird - also eine komplett neue Klassendefinition; in meinem Fall abgeleitet von ObservableCollection<T>.

Hintergrund: Ich binde die Daten vom Server 1:1 an ein Grid ran (unheimlich performant). Mit ein paar Bearbeitungsfunktionen verändere ich die Objekte in der Liste - ich kann auch welche hinzufügen oder löschen. Der Charm ist nun, aufgrund dessen, dass es schon eine ObservableCollection ist, wird mir gleich das Grid aktualisiert (wunderbar schnell). Wenn ich die Daten gegen den Server speichere, dann natürlich nur die Änderungen (also dann tatsächlich eine neue Liste mit den Daten die sich geändert haben).
--> Ergo würde ich eine neue Collection zusammenbauen würde das unnötig Performance kosten.

Normalerweise würde ich auch mit Extension-Methods weiterkommen. Allerdings hab ich 2-3 Stellen wo ich dann doch Properties an der Collection lokal mitführe um mir ein paar Zustände der Daten zu merken. Von daher ist die Klasse mit partial erweitern wohl besser geeignet.

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Von daher ist die Klasse mit partial erweitern wohl besser geeignet.

Wenn Du keinen Weg findest, das automatisch mitgenerieren zu lassen, würde ich davon auf jeden Fall abraten, schon allein wegen dem Pflegeaufwand.
Du könntest ja einen Wrapper bauen - oder einfach eine Klasse die Deine Collection als Member bekommt und als Property verfügbar macht. In diese Klasse kannst Du Deine Member und Methoden stecken.
Eine weitere Möglichkeit wäre vielleicht ein Dictionary<MyCollection, AdditionalData>, wobei AdditionalData die bisherigen zusätzlichen Member erhält - dann könntest Du doch mit Erweiterunsmethoden arbeiten.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca