SoapMethodAttribute 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
自定义方法的 SOAP 生成和处理。 此类不能被继承。
public ref class SoapMethodAttribute sealed : System::Runtime::Remoting::Metadata::SoapAttribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class SoapMethodAttribute : System.Runtime.Remoting.Metadata.SoapAttribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class SoapMethodAttribute : System.Runtime.Remoting.Metadata.SoapAttribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type SoapMethodAttribute = class
inherit SoapAttribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SoapMethodAttribute = class
inherit SoapAttribute
Public NotInheritable Class SoapMethodAttribute
Inherits SoapAttribute
- 继承
- 属性
示例
下面的代码示例演示如何使用 类中的 SoapMethodAttribute 成员来自定义方法的 SOAP 生成和处理。
#using <System.dll>
#using <System.Runtime.Remoting.dll>
using namespace System;
using namespace System::Runtime::Remoting::Metadata;
namespace ExampleNamespace
{
public ref class ExampleClass
{
public:
[SoapMethod(
ResponseXmlElementName="ExampleResponseElement",
ResponseXmlNamespace=
"http://example.org/MethodResponseXmlNamespace",
ReturnXmlElementName="HelloMessage",
SoapAction="http://example.org/ExampleSoapAction#GetHello",
XmlNamespace="http://example.org/MethodCallXmlNamespace")]
String^ GetHello( String^ name )
{
return String::Format( L"Hello, {0}", name );
}
};
}
int main()
{
// Get the method info object for the GetHello method.
System::Reflection::MethodBase^ getHelloMethod =
ExampleNamespace::ExampleClass::typeid->GetMethod( L"GetHello" );
// Print the XML namespace for the invocation of this method.
String^ methodCallXmlNamespace =
System::Runtime::Remoting::SoapServices::GetXmlNamespaceForMethodCall(
getHelloMethod );
Console::WriteLine( L"The XML namespace for the response of the method "
L"GetHello in ExampleClass is {0}.", methodCallXmlNamespace );
// Print the XML namespace for the response of this method.
String^ methodResponseXmlNamespace =
System::Runtime::Remoting::SoapServices::GetXmlNamespaceForMethodCall(
getHelloMethod );
Console::WriteLine( L"The XML namespace for the invocation of the method "
L"GetHello in ExampleClass is {0}.", methodResponseXmlNamespace );
// Print the SOAP action for this method.
String^ getHelloSoapAction =
System::Runtime::Remoting::SoapServices::GetXmlNamespaceForMethodCall(
getHelloMethod );
Console::WriteLine( L"The SOAP action for the method "
L"GetHello in ExampleClass is {0}.", getHelloSoapAction );
}
using System;
using System.Runtime.Remoting.Metadata;
namespace ExampleNamespace
{
public class ExampleClass
{
[SoapMethod(
ResponseXmlElementName="ExampleResponseElement",
ResponseXmlNamespace=
"http://example.org/MethodResponseXmlNamespace",
ReturnXmlElementName="HelloMessage",
SoapAction="http://example.org/ExampleSoapAction#GetHello",
XmlNamespace="http://example.org/MethodCallXmlNamespace")]
public string GetHello(string name)
{
return "Hello, " + name;
}
}
}
public class Demo
{
public static void Main(string[] args)
{
// Get the method info object for the GetHello method.
System.Reflection.MethodBase getHelloMethod =
typeof(ExampleNamespace.ExampleClass).GetMethod("GetHello");
// Print the XML namespace for the invocation of this method.
string methodCallXmlNamespace =
System.Runtime.Remoting.SoapServices.
GetXmlNamespaceForMethodCall(getHelloMethod);
Console.WriteLine(
"The XML namespace for the response of the method " +
"GetHello in ExampleClass is {0}.",
methodCallXmlNamespace);
// Print the XML namespace for the response of this method.
string methodResponseXmlNamespace =
System.Runtime.Remoting.SoapServices.
GetXmlNamespaceForMethodResponse(getHelloMethod);
Console.WriteLine(
"The XML namespace for the invocation of the method " +
"GetHello in ExampleClass is {0}.",
methodResponseXmlNamespace);
// Print the SOAP action for this method.
string getHelloSoapAction =
System.Runtime.Remoting.SoapServices.
GetSoapActionFromMethodBase(getHelloMethod);
Console.WriteLine(
"The SOAP action for the method " +
"GetHello in ExampleClass is {0}.",
getHelloSoapAction);
}
}
注解
特性的目标对象 SoapMethodAttribute 是可以远程调用的方法。 SoapMethodAttribute应用 以自定义 SOAP 生成和处理。 此属性的属性允许程序员自定义 SOAPAction HTTP 标头字段,以指示 SOAP HTTP 请求的意图。
构造函数
SoapMethodAttribute() |
创建 SoapMethodAttribute 的实例。 |
字段
ProtXmlNamespace |
在其下序列化当前 SOAP 特性的目标的 XML 命名空间的名称。 (继承自 SoapAttribute) |
ReflectInfo |
一个反射对象,从 SoapAttribute 类派生的特性类使用该对象设置 XML 序列化信息。 (继承自 SoapAttribute) |
属性
Embedded |
获取或设置一个值,该值指示是否必须在 SOAP 序列化期间嵌套该类型。 (继承自 SoapAttribute) |
ResponseXmlElementName |
获取或设置用于对目标方法的方法响应的 XML 元素名称。 |
ResponseXmlNamespace |
获取或设置用于响应目标方法的方法的 XML 元素命名空间。 |
ReturnXmlElementName |
获取或设置用于来自目标方法的返回值的 XML 元素名称。 |
SoapAction |
获取或设置与用此方法发送的 HTTP 请求一起使用的 SOAPAction 标头字段。 目前未实现此属性。 |
TypeId |
在派生类中实现时,获取此 Attribute 的唯一标识符。 (继承自 Attribute) |
UseAttribute |
获取或设置一个值,该值指示当前特性的目标是否序列化为 XML 特性而非 XML 字段。 |
XmlNamespace |
获取或设置在序列化目标方法的远程方法调用期间使用的 XML 命名空间。 |
方法
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute) |
GetHashCode() |
返回此实例的哈希代码。 (继承自 Attribute) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
IsDefaultAttribute() |
在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute) |
Match(Object) |
当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
将一组名称映射为对应的一组调度标识符。 (继承自 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供对某一对象公开的属性和方法的访问。 (继承自 Attribute) |