Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WCF Vererbung: Eigenschaft in Kind-Klasse für die Serialisierung ausschließen
Alphawolf1988
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

WCF Vererbung: Eigenschaft in Kind-Klasse für die Serialisierung ausschließen

beantworten | zitieren | melden

Hallo Zusammen!

Habe eine Frage bzgl der Vererbung von Klassen in WCF. Ich habe 2 Typen:


[DataContract]
    [KnownType(typeof(MessageDB))]
    public class Message : ICulvertEntry
    {
        // --------------------------------------------------------
        // Class Properties
        // --------------------------------------------------------


        /// <summary>
        /// Gets or sets the entry ID.
        /// </summary>
        /// <value>
        /// The entry ID.
        /// </value>
        [DataMember]
        public int EntryID
        {
            get;
            set;

        } // Property: EntryID


        /// <summary>
        /// Gets or sets the sender ID.
        /// </summary>
        /// <value>
        /// The sender ID.
        /// </value>
        [DataMember]
        public int SenderID
        {
            get;
            set;

        } // Property: SenderID


        /// <summary>
        /// Gets or sets the receiver ID.
        /// </summary>
        /// <value>
        /// The receiver ID.
        /// </value>
        [DataMember]
        public int ReceiverID
        {
            get;
            set;

        } // Property: ReceiverID


        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="Message"/> is readed.
        /// </summary>
        /// <value>
        ///   <c>true</c> if readed; otherwise, <c>false</c>.
        /// </value>
        [DataMember]
        public bool Readed
        {
            get;
            set;

        } // Property: Readed


        /// <summary>
        /// Gets or sets the subject.
        /// </summary>
        /// <value>
        /// The subject.
        /// </value>
        [DataMember]
        public String Subject
        {
            get;
            set;

        } // Property: Subject


        /// <summary>
        /// Gets or sets the body.
        /// </summary>
        /// <value>
        /// The body.
        /// </value>
        [DataMember]
        public String Body
        {
            get;
            set;

        } // Property: Body 

    } // class Message


/// <summary>
    /// The MessageDB Class
    /// </summary>
    [DataContract]
    public class MessageDB : Message
    {
        // --------------------------------------------------------
        // Class Properties
        // --------------------------------------------------------


        /// <summary>
        /// Gets or sets the owner ID.
        /// </summary>
        /// <value>
        /// The owner ID.
        /// </value>
        [DataMember]
        public int OwnerID
        {
            get;
            set;

        } // Property: OwnerID


        // --------------------------------------------------------
        // Class Functions
        // --------------------------------------------------------


        /// <summary>
        /// Initializes a new instance of the <see cref="MessageDB"/> class.
        /// </summary>
        public MessageDB()
        {
        } // Constructor


        /// <summary>
        /// Initializes a new instance of the <see cref="MessageDB"/> class.
        /// </summary>
        /// <param name="ownerID">The owner ID.</param>
        /// <param name="senderID">The sender ID.</param>
        /// <param name="receiverID">The receiver ID.</param>
        /// <param name="subject">The subject.</param>
        /// <param name="body">The body.</param>
        public MessageDB(int ownerID, int senderID, int receiverID, String subject, String body)
        {
            if (subject == null) throw new ArgumentNullException("subject");
            if (body == null) throw new ArgumentNullException("body");

            OwnerID = ownerID;
            SenderID = senderID;
            ReceiverID = receiverID;
            Subject = subject;
            Body = body;

        } // Constructor

    } // class MessageDB

Die Klasse MessageDB benutze ich um lokal auf der Festplatte zu speichern und besitzt noch einen zusätzlichen Parameter. Dann habe ich noch eine Service Funktion:


[OperationContract]
        [WebGet(UriTemplate = "/GetInboxMessages")]
        [Description("Return all inbox messages.")]
        List<Message> GetInboxMessages();

Diese Funktion gibt auch alles sauber serialisiert als JSON zurück, jedoch auch den Member "OwnerID" von MessageDB. Ist es irgendwie möglich das nur die DataMember von Message serialisiert zurückgegeben werden?

MFG Wolf
Wer zuerst kommt malt zuerst, wer danach kommt malt drüber!
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7581
Herkunft: Waidring

beantworten | zitieren | melden

Hallo Alphawolf1988,

mit dem IgnoreDataMemberAttribute können Eigenschaften von der Serialisierung ausgeschlossen werden.

BTW: die Bezeichnung Message würde ich eher vermeiden, da diese im Kontext von WCF eine (wichtige) Bedeutung hat.

mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers