IdentifierElement.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / IdentifierElement.cs / 1 / IdentifierElement.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------

// Define the  element that lives in an  element 
// inside an  header
 
using System; 
using System.ServiceModel;
using System.Xml; 
using System.Xml.Schema;
using System.Xml.Serialization;
using Microsoft.Transactions.Wsat.Protocol;
 
namespace Microsoft.Transactions.Wsat.Messaging
{ 
    abstract class IdentifierElement : IXmlSerializable 
    {
        string identifier; 
        CoordinationStrings coordinationStrings;

        public IdentifierElement(ProtocolVersion protocolVersion) : this(protocolVersion, null) {}
        public IdentifierElement(ProtocolVersion protocolVersion, string identifier) 
        {
            this.identifier = identifier; 
            this.coordinationStrings = CoordinationStrings.Version(protocolVersion); 
        }
 
        public string Identifier
        {
            get { return this.identifier; }
        } 

        void IXmlSerializable.ReadXml(XmlReader reader) 
        { 
            this.identifier = reader.ReadElementString(this.coordinationStrings.Identifier,
                                                       this.coordinationStrings.Namespace).Trim(); 
        }

        void IXmlSerializable.WriteXml(XmlWriter writer)
        { 
            writer.WriteValue(this.identifier);
        } 
 
        XmlSchema IXmlSerializable.GetSchema()
        { 
            return null;
        }

        public static IdentifierElement Instance(string identifier, ProtocolVersion protocolVersion) 
        {
            ProtocolVersionHelper.AssertProtocolVersion(protocolVersion, typeof(IdentifierElement), "V"); //assert valid protocol version 
 
            switch (protocolVersion)
            { 
                case ProtocolVersion.Version10 :
                    return new IdentifierElement10(identifier);
                case ProtocolVersion.Version11 :
                    return new IdentifierElement11(identifier); 
                default :
                    return null; // inaccessible path because we have asserted the protocol version 
            } 
        }
    } 

    [XmlRoot(ElementName = CoordinationExternalStrings.Identifier,
             Namespace = CoordinationExternal10Strings.Namespace)]
    class IdentifierElement10 : IdentifierElement 
    {
        public IdentifierElement10() : this(null) {} 
        public IdentifierElement10(string identifier) : base(ProtocolVersion.Version10, identifier) {} 
    }
 
    [XmlRoot(ElementName = CoordinationExternalStrings.Identifier,
             Namespace = CoordinationExternal11Strings.Namespace)]
    class IdentifierElement11 : IdentifierElement
    { 
        public IdentifierElement11() : this(null) {}
        public IdentifierElement11(string identifier) : base(ProtocolVersion.Version11, identifier) {} 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK