You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@@ -0,0 +1,106 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="WebServiceAttribute.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace System.Web.Services {
|
||||
|
||||
using System;
|
||||
using System.Web.Services.Protocols;
|
||||
|
||||
/// <include file='doc\WebServiceAttribute.uex' path='docs/doc[@for="WebServiceAttribute"]/*' />
|
||||
/// <devdoc>
|
||||
/// <para> 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.</para>
|
||||
/// </devdoc>
|
||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
|
||||
public sealed class WebServiceAttribute : Attribute {
|
||||
string description;
|
||||
string ns = DefaultNamespace;
|
||||
string name;
|
||||
|
||||
/// <include file='doc\WebServiceAttribute.uex' path='docs/doc[@for="WebServiceAttribute.WebServiceAttribute"]/*' />
|
||||
/// <devdoc>
|
||||
/// Initializes a new instance of the <see cref='System.Web.Services.WebServiceAttribute'/> class.
|
||||
/// </devdoc>
|
||||
public WebServiceAttribute() {
|
||||
}
|
||||
|
||||
/// <include file='doc\WebServiceAttribute.uex' path='docs/doc[@for="WebServiceAttribute.Description"]/*' />
|
||||
/// <devdoc>
|
||||
/// 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.
|
||||
/// </devdoc>
|
||||
public string Description {
|
||||
get {
|
||||
return (description == null) ? string.Empty : description;
|
||||
}
|
||||
|
||||
set {
|
||||
description = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\WebServiceAttribute.uex' path='docs/doc[@for="WebServiceAttribute.Namespace"]/*' />
|
||||
/// <devdoc>
|
||||
/// The default XML namespace to use for the web service.
|
||||
/// </devdoc>
|
||||
public string Namespace {
|
||||
get {
|
||||
return ns;
|
||||
}
|
||||
set {
|
||||
ns = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\WebServiceAttribute.uex' path='docs/doc[@for="WebServiceAttribute.Name"]/*' />
|
||||
/// <devdoc>
|
||||
/// The name to use for the web service in the service description.
|
||||
/// </devdoc>
|
||||
public string Name {
|
||||
get {
|
||||
return name == null ? string.Empty : name;
|
||||
}
|
||||
set {
|
||||
name = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <include file='doc\WebServiceAttribute.uex' path='docs/doc[@for="WebServiceAttribute.DefaultNamespace"]/*' />
|
||||
/// <devdoc>
|
||||
/// The default value for the XmlNamespace property.
|
||||
/// </devdoc>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user