WebServiceAttribute.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / WebServiceAttribute.cs / 1305376 / WebServiceAttribute.cs

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

namespace System.Web.Services { 
 
    using System;
    using System.Web.Services.Protocols; 

    /// 
    /// 
    ///     The WebService attribute may be used to add additional information to a 
    ///       Web Service, such as a string describing its functionality. The attribute is not required for a Web Service to
    ///       be published and executed. 
    ///  
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
    public sealed class WebServiceAttribute : Attribute { 
        string description;
        string ns = DefaultNamespace;
        string name;
 
        /// 
        ///  
        ///    Initializes a new instance of the  class. 
        /// 
        public WebServiceAttribute() { 
        }

        /// 
        ///  
        ///    A descriptive message for the Web Service. The message
        ///    is used when generating description documents for the Web Service, such as the 
        ///    Sevice Contract and the Service Description page. 
        /// 
        public string Description { 
            get {
                return (description == null) ? string.Empty : description;
            }
 
            set {
                description = value; 
            } 
        }
 
        /// 
        /// 
        /// The default XML namespace to use for the web service.
        ///  
        public string Namespace {
            get { 
                return ns; 
            }
            set { 
                ns = value;
            }
        }
 
        /// 
        ///  
        /// The name to use for the web service in the service description. 
        /// 
        public string Name { 
            get {
                return name == null ? string.Empty : name;
            }
            set { 
                name = value;
            } 
        } 

        ///  
        /// 
        /// The default value for the XmlNamespace property.
        /// 
        public const string DefaultNamespace = "http://tempuri.org/"; 
    }
 
    internal class WebServiceReflector { 
        private WebServiceReflector() {}
        internal static WebServiceAttribute GetAttribute(Type type) { 
            object[] attrs = type.GetCustomAttributes(typeof(WebServiceAttribute), false);
            if (attrs.Length == 0) return new WebServiceAttribute();
            return (WebServiceAttribute)attrs[0];
        } 

        internal static WebServiceAttribute GetAttribute(LogicalMethodInfo[] methodInfos) { 
            if (methodInfos.Length == 0) return new WebServiceAttribute(); 
            Type mostDerived = GetMostDerivedType(methodInfos);
            return GetAttribute(mostDerived); 
        }

        internal static Type GetMostDerivedType(LogicalMethodInfo[] methodInfos) {
            if (methodInfos.Length == 0) return null; 
            Type mostDerived = methodInfos[0].DeclaringType;
            for (int i = 1; i < methodInfos.Length; i++) { 
                Type derived = methodInfos[i].DeclaringType; 
                if (derived.IsSubclassOf(mostDerived)) {
                    mostDerived = derived; 
                }
            }
            return mostDerived;
        } 
    }
} 

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

namespace System.Web.Services { 
 
    using System;
    using System.Web.Services.Protocols; 

    /// 
    /// 
    ///     The WebService attribute may be used to add additional information to a 
    ///       Web Service, such as a string describing its functionality. The attribute is not required for a Web Service to
    ///       be published and executed. 
    ///  
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
    public sealed class WebServiceAttribute : Attribute { 
        string description;
        string ns = DefaultNamespace;
        string name;
 
        /// 
        ///  
        ///    Initializes a new instance of the  class. 
        /// 
        public WebServiceAttribute() { 
        }

        /// 
        ///  
        ///    A descriptive message for the Web Service. The message
        ///    is used when generating description documents for the Web Service, such as the 
        ///    Sevice Contract and the Service Description page. 
        /// 
        public string Description { 
            get {
                return (description == null) ? string.Empty : description;
            }
 
            set {
                description = value; 
            } 
        }
 
        /// 
        /// 
        /// The default XML namespace to use for the web service.
        ///  
        public string Namespace {
            get { 
                return ns; 
            }
            set { 
                ns = value;
            }
        }
 
        /// 
        ///  
        /// The name to use for the web service in the service description. 
        /// 
        public string Name { 
            get {
                return name == null ? string.Empty : name;
            }
            set { 
                name = value;
            } 
        } 

        ///  
        /// 
        /// The default value for the XmlNamespace property.
        /// 
        public const string DefaultNamespace = "http://tempuri.org/"; 
    }
 
    internal class WebServiceReflector { 
        private WebServiceReflector() {}
        internal static WebServiceAttribute GetAttribute(Type type) { 
            object[] attrs = type.GetCustomAttributes(typeof(WebServiceAttribute), false);
            if (attrs.Length == 0) return new WebServiceAttribute();
            return (WebServiceAttribute)attrs[0];
        } 

        internal static WebServiceAttribute GetAttribute(LogicalMethodInfo[] methodInfos) { 
            if (methodInfos.Length == 0) return new WebServiceAttribute(); 
            Type mostDerived = GetMostDerivedType(methodInfos);
            return GetAttribute(mostDerived); 
        }

        internal static Type GetMostDerivedType(LogicalMethodInfo[] methodInfos) {
            if (methodInfos.Length == 0) return null; 
            Type mostDerived = methodInfos[0].DeclaringType;
            for (int i = 1; i < methodInfos.Length; i++) { 
                Type derived = methodInfos[i].DeclaringType; 
                if (derived.IsSubclassOf(mostDerived)) {
                    mostDerived = derived; 
                }
            }
            return mostDerived;
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

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