IMethodReturnMessage IMethodReturnMessage IMethodReturnMessage IMethodReturnMessage Interface

定义

定义方法调用返回消息接口。Defines the method call return message interface.

public interface class IMethodReturnMessage : System::Runtime::Remoting::Messaging::IMethodMessage
[System.Runtime.InteropServices.ComVisible(true)]
public interface IMethodReturnMessage : System.Runtime.Remoting.Messaging.IMethodMessage
type IMethodReturnMessage = interface
    interface IMethodMessage
    interface IMessage
Public Interface IMethodReturnMessage
Implements IMethodMessage
派生
属性
实现

示例

下面的示例代码演示了重写RealProxy.Invoke的自定义代理, 以便将返回消息信息写入控制台。The following example code shows a custom proxy that overrides RealProxy.Invoke in order to write the return message information to the console.

[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::LinkDemand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::InheritanceDemand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]
public ref class MyProxy: public RealProxy
{
private:
   String^ stringUri;
   MarshalByRefObject^ myMarshalByRefObject;

public:
   MyProxy( Type^ myType ) : RealProxy( myType )
   {
      myMarshalByRefObject = dynamic_cast<MarshalByRefObject^>(Activator::CreateInstance( myType ));
      ObjRef^ myObject = RemotingServices::Marshal( myMarshalByRefObject );
      stringUri = myObject->URI;
   }

   virtual IMessage^ Invoke( IMessage^ myMessage ) override
   {
      IMethodCallMessage^ myCallMessage = (IMethodCallMessage^)( myMessage );

      IMethodReturnMessage^ myIMethodReturnMessage =
         RemotingServices::ExecuteMessage( myMarshalByRefObject, myCallMessage );

      Console::WriteLine( "Method name : {0}", myIMethodReturnMessage->MethodName );
      Console::WriteLine( "The return value is : {0}", myIMethodReturnMessage->ReturnValue );

      // Get number of 'ref' and 'out' parameters.
      int myArgOutCount = myIMethodReturnMessage->OutArgCount;
      Console::WriteLine( "The number of 'ref', 'out' parameters are : {0}",
         myIMethodReturnMessage->OutArgCount );
      // Gets name and values of 'ref' and 'out' parameters.
      for ( int i = 0; i < myArgOutCount; i++ )
      {
         Console::WriteLine( "Name of argument {0} is '{1}'.",
            i, myIMethodReturnMessage->GetOutArgName( i ) );
         Console::WriteLine( "Value of argument {0} is '{1}'.",
            i, myIMethodReturnMessage->GetOutArg( i ) );
      }
      Console::WriteLine();
      array<Object^>^myObjectArray = myIMethodReturnMessage->OutArgs;
      for ( int i = 0; i < myObjectArray->Length; i++ )
         Console::WriteLine( "Value of argument {0} is '{1}' in OutArgs",
            i, myObjectArray[ i ] );
      return myIMethodReturnMessage;
   }
};
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class MyProxy : RealProxy
{
   String stringUri;
   MarshalByRefObject myMarshalByRefObject;

   public MyProxy(Type myType): base(myType)
   {
      myMarshalByRefObject = (MarshalByRefObject)Activator.CreateInstance(myType);
      ObjRef myObject = RemotingServices.Marshal(myMarshalByRefObject);
      stringUri = myObject.URI;
   }

   public override IMessage Invoke(IMessage myMessage)
   {
      IMethodCallMessage myCallMessage = (IMethodCallMessage)myMessage;

      IMethodReturnMessage myIMethodReturnMessage =
         RemotingServices.ExecuteMessage(myMarshalByRefObject, myCallMessage);

      Console.WriteLine("Method name : " + myIMethodReturnMessage.MethodName);
      Console.WriteLine("The return value is : " + myIMethodReturnMessage.ReturnValue);

      // Get number of 'ref' and 'out' parameters.
      int myArgOutCount = myIMethodReturnMessage.OutArgCount;
      Console.WriteLine("The number of 'ref', 'out' parameters are : " +
         myIMethodReturnMessage.OutArgCount);
      // Gets name and values of 'ref' and 'out' parameters.
      for(int i = 0; i < myArgOutCount; i++)
      {
         Console.WriteLine("Name of argument {0} is '{1}'.",
            i, myIMethodReturnMessage.GetOutArgName(i));
         Console.WriteLine("Value of argument {0} is '{1}'.",
            i, myIMethodReturnMessage.GetOutArg(i));
      }
      Console.WriteLine();
      object[] myObjectArray = myIMethodReturnMessage.OutArgs; 
      for(int i = 0; i < myObjectArray.Length; i++)
         Console.WriteLine("Value of argument {0} is '{1}' in OutArgs",
            i, myObjectArray[i]);
      return myIMethodReturnMessage;
   }
}
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
Public Class MyProxy
   Inherits RealProxy
   Private stringUri As String
   Private myMarshalByRefObject As MarshalByRefObject
   
   Public Sub New(myType As Type)
      MyBase.New(myType)
      myMarshalByRefObject = CType(Activator.CreateInstance(myType), MarshalByRefObject)
      Dim myObject As ObjRef = RemotingServices.Marshal(myMarshalByRefObject)
      stringUri = myObject.URI
   End Sub
   
   Public Overrides Function Invoke(myMessage As IMessage) As IMessage
      Dim myCallMessage As IMethodCallMessage = CType(myMessage, IMethodCallMessage)

      Dim myIMethodReturnMessage As IMethodReturnMessage = RemotingServices. _
         ExecuteMessage(myMarshalByRefObject, myCallMessage)

      Console.WriteLine("Method name : " + myIMethodReturnMessage.MethodName)
      Console.WriteLine("The return value is : " + myIMethodReturnMessage.ReturnValue)
      
      ' Get number of 'ref' and 'out' parameters.
      Dim myArgOutCount As Integer = myIMethodReturnMessage.OutArgCount
      Console.WriteLine("The number of 'ref', 'out' parameters are : " + _
         myIMethodReturnMessage.OutArgCount.ToString())
      ' Gets name and values of 'ref' and 'out' parameters.
      Dim i As Integer
      For i = 0 To myArgOutCount - 1
         Console.WriteLine("Name of argument {0} is '{1}'.", i, _
            myIMethodReturnMessage.GetOutArgName(i))
         Console.WriteLine("Value of argument {0} is '{1}'.", i, _
            myIMethodReturnMessage.GetOutArg(i))
      Next i
      Console.WriteLine()
      Dim myObjectArray As Object() = myIMethodReturnMessage.OutArgs
      For i = 0 To myObjectArray.Length - 1
         Console.WriteLine("Value of argument {0} is '{1}' in OutArgs", i, myObjectArray(i))
      Next i
      Return myIMethodReturnMessage
   End Function 'Invoke
End Class

注解

方法调用返回消息表示对消息接收器末尾的对象上的方法调用的响应。A method call return message represents the response to a method call on an object at the end of the message sink. IMethodReturnMessage作为在远程对象上调用的方法的结果生成, 并用于将方法调用的结果返回给调用方。An IMethodReturnMessage is generated as a result of a method called on a remote object, and is used to return the results of the method call back to the caller.

属性

ArgCount ArgCount ArgCount ArgCount

获取传递给该方法的参数的数目。Gets the number of arguments passed to the method.

(Inherited from IMethodMessage)
Args Args Args Args

获取传递给该方法的参数数组。Gets an array of arguments passed to the method.

(Inherited from IMethodMessage)
Exception Exception Exception Exception

获取在方法调用期间引发的异常。Gets the exception thrown during the method call.

HasVarArgs HasVarArgs HasVarArgs HasVarArgs

获取一个值,该值指示消息是否具有变量参数。Gets a value indicating whether the message has variable arguments.

(Inherited from IMethodMessage)
LogicalCallContext LogicalCallContext LogicalCallContext LogicalCallContext

获取当前方法调用的 LogicalCallContextGets the LogicalCallContext for the current method call.

(Inherited from IMethodMessage)
MethodBase MethodBase MethodBase MethodBase

获取被调用方法的 MethodBaseGets the MethodBase of the called method.

(Inherited from IMethodMessage)
MethodName MethodName MethodName MethodName

获取被调用方法的名称。Gets the name of the invoked method.

(Inherited from IMethodMessage)
MethodSignature MethodSignature MethodSignature MethodSignature

获取包含方法签名的对象。Gets an object containing the method signature.

(Inherited from IMethodMessage)
OutArgCount OutArgCount OutArgCount OutArgCount

获取方法调用中标记为 refout 参数的参数的数目。Gets the number of arguments in the method call marked as ref or out parameters.

OutArgs OutArgs OutArgs OutArgs

返回标记为 refout 参数的指定参数。Returns the specified argument marked as a ref or an out parameter.

Properties Properties Properties Properties

获取表示消息属性集合的 IDictionaryGets an IDictionary that represents a collection of the message's properties.

(Inherited from IMessage)
ReturnValue ReturnValue ReturnValue ReturnValue

获取方法调用的返回值。Gets the return value of the method call.

TypeName TypeName TypeName TypeName

获取要将该调用发送到的特定对象的完整 Type 名称。Gets the full Type name of the specific object that the call is destined for.

(Inherited from IMethodMessage)
Uri Uri Uri Uri

获取要将该调用发送到的特定对象的 URI。Gets the URI of the specific object that the call is destined for.

(Inherited from IMethodMessage)

方法

GetArg(Int32) GetArg(Int32) GetArg(Int32) GetArg(Int32)

获取作为 Object 的特定参数。Gets a specific argument as an Object.

(Inherited from IMethodMessage)
GetArgName(Int32) GetArgName(Int32) GetArgName(Int32) GetArgName(Int32)

获取传递给该方法的参数的名称。Gets the name of the argument passed to the method.

(Inherited from IMethodMessage)
GetOutArg(Int32) GetOutArg(Int32) GetOutArg(Int32) GetOutArg(Int32)

返回标记为 refout 参数的指定参数。Returns the specified argument marked as a ref or an out parameter.

GetOutArgName(Int32) GetOutArgName(Int32) GetOutArgName(Int32) GetOutArgName(Int32)

返回标记为 refout 参数的指定参数的名称。Returns the name of the specified argument marked as a ref or an out parameter.

适用于