2010-08-10 5 views
8

Als ein Beispiel von dieser Seite: http://www.c-sharpcorner.com/UploadFile/ankithakur/ExceptionHandlingWCF12282007072617AM/ExceptionHandlingWCF.aspxWarum werden die meisten DataContract DataMembers auf Coding-Websites angezeigt, die nicht mit automatischen Eigenschaften geschrieben wurden?

[DataContract] 
public class MyFaultException 
{ 
    private string _reason; 

    [DataMember] 
    public string Reason 
    { 
     get { return _reason; } 
     set { _reason = value; } 
    } 
} 

Gibt es einen Grund, warum dieser Ansatz begünstigt wird, dass WCF bei der Prüfung begonnen .NET 3.0 und C# 3 bereits verfügt über eine automatische Eigenschaften? Warum ist es nicht wie folgt geschrieben?

[DataContract] 
public class MyFaultException 
{ 
    [DataMember] 
    public string Reason { get; set; } 
} 
+2

:

Schließlich Daten Verträge können optional gegen den, so dass schreibgeschützte Eigenschaften etc Feld angegeben werden. – mquander

+1

Ich kann mir keinen Grund dafür vorstellen, außer wenn das Beispiel geschrieben wurde, war der Autor nicht daran gewöhnt, automatische Eigenschaften zu verwenden, also benutzte er die Notation, mit der er am meisten vertraut war. – Lazarus

Antwort

6

Nur der Vollständigkeit halber über Jons Punkt, ein weiterer Punkt hier ist, dass in viele (nicht alle) Szenarien der Daten-Vertrag von einer Art von Modell (dbml, EF, WSDL, Proto, etc.) generiert wird. Daher gibt es keine echten zusätzlichen Kosten zu expliziten Eigenschaften, und explizite Eigenschaften funktionieren auf mehr Sprachenversionen.

Darüber hinaus kann der Vorlagencode partielle Methoden enthalten, um Vor-/Nachoperationen und anderen Framework-Code zu ermöglichen. Dieser Teil der Vorlage wurde der Kürze halber aus dem veröffentlichten Beispiel weggelassen. es gibt keinen guten Grund ziemlicher Sicherheit

[DataContract] 
public class MyFaultException 
{ 
    [DataMember(Name="Reason")] 
    private string _reason; 
    public string Reason { get { return _reason; } } 
} 
+0

ist automatische Eigenschaft Safe auf WCF? Versionierungsweise und andere Faktoren –

+2

Gibt es neue Informationen dazu, oder können wir davon ausgehen, dass Auto-Eigenschaften im Jahr 2014 sicher verwendet werden können? :) – Noctis

6

C# 3 wurde mit NET 3.5 - d.h. nach .NET 3.0.

Natürlich könnte es andere Gründe dafür geben, dass es eine schlechte Idee ist, automatische Eigenschaften für DataMember Eigenschaften zu verwenden, aber das ist sicherlich ein Grund, warum Sie solche Beispiele sehen könnten.

(Zugegeben, die Seite, die Sie gab als Beispiel im Januar 2008 geschrieben wurde -. Aber als VS2008 erst im November 2007 veröffentlicht wurde, kann der Autor auch nicht von diesem Punkt aktualisiert haben)

+0

+1 weitgehend zu sehen, wie hoch Ihr Ruf kann gehen;) Oh, und für einen schönen Einblick. Muss dein Buch lesen. – Lazarus

+1

+1 Um die Zeitachse zu notieren. Es kann also nur sein, dass WCF schon sehr früh begeistert ist und sie damit begonnen haben, es zu dokumentieren, aber immer noch mit explizit unterstützten Eigenschaften. Immer noch mit anderen Gründen interessiert, warum automatische Eigenschaften ist eine schlechte Idee (technisch-weise) für WCF, wenn es keine gibt, werde ich einfach automatische Eigenschaften konsistent verwenden –

+0

@Michael: Ich werde ping Marc Gravel, der viel mehr mit WCF getan hat als ich habe. –

Verwandte Themen