IMethodReturnMessage Интерфейс

Определение

Определяет интерфейс возвращаемого сообщения о вызове метода.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

Возвращает число аргументов, переданных методу.Gets the number of arguments passed to the method.

(Унаследовано от IMethodMessage)
Args

Возвращает массив аргументов, переданных методу.Gets an array of arguments passed to the method.

(Унаследовано от IMethodMessage)
Exception

Возвращает исключение, инициированное при вызове метода.Gets the exception thrown during the method call.

HasVarArgs

Возвращает значение, указывающее, имеет ли сообщение переменные аргументы.Gets a value indicating whether the message has variable arguments.

(Унаследовано от IMethodMessage)
LogicalCallContext

Возвращает LogicalCallContext для текущего вызова метода.Gets the LogicalCallContext for the current method call.

(Унаследовано от IMethodMessage)
MethodBase

Получает объект MethodBase вызванного метода.Gets the MethodBase of the called method.

(Унаследовано от IMethodMessage)
MethodName

Возвращает имя вызванного метода.Gets the name of the invoked method.

(Унаследовано от IMethodMessage)
MethodSignature

Возвращает объект, содержащий подпись метода.Gets an object containing the method signature.

(Унаследовано от IMethodMessage)
OutArgCount

Возвращает число аргументов в вызове метода, помеченных как параметры ref или out.Gets the number of arguments in the method call marked as ref or out parameters.

OutArgs

Возвращает указанный аргумент, помеченный как параметр ref или out.Returns the specified argument marked as a ref or an out parameter.

Properties

Возвращает IDictionary, представляющий коллекцию свойств сообщений.Gets an IDictionary that represents a collection of the message's properties.

(Унаследовано от IMessage)
ReturnValue

Возвращает возвращаемое значение вызова метода.Gets the return value of the method call.

TypeName

Получает полное имя Type определенного объекта, для которого предназначен вызов.Gets the full Type name of the specific object that the call is destined for.

(Унаследовано от IMethodMessage)
Uri

Возвращает URI определенного объекта, для которого предназначен вызов.Gets the URI of the specific object that the call is destined for.

(Унаследовано от IMethodMessage)

Методы

GetArg(Int32)

Возвращает определенный аргумент как Object.Gets a specific argument as an Object.

(Унаследовано от IMethodMessage)
GetArgName(Int32)

Возвращает имя аргумента, переданного методу.Gets the name of the argument passed to the method.

(Унаследовано от IMethodMessage)
GetOutArg(Int32)

Возвращает указанный аргумент, помеченный как параметр ref или out.Returns the specified argument marked as a ref or an out parameter.

GetOutArgName(Int32)

Возвращает имя указанного аргумента, помеченного как параметр ref или out.Returns the name of the specified argument marked as a ref or an out parameter.

Применяется к