IMethodMessage Interface

IMethodMessage Interface

 

Defines the method message interface.

Namespace:   System.Runtime.Remoting.Messaging
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public interface IMethodMessage : IMessage

NameDescription
System_CAPS_pubpropertyArgCount

Gets the number of arguments passed to the method.

System_CAPS_pubpropertyArgs

Gets an array of arguments passed to the method.

System_CAPS_pubpropertyHasVarArgs

Gets a value indicating whether the message has variable arguments.

System_CAPS_pubpropertyLogicalCallContext

Gets the LogicalCallContext for the current method call.

System_CAPS_pubpropertyMethodBase

Gets the MethodBase of the called method.

System_CAPS_pubpropertyMethodName

Gets the name of the invoked method.

System_CAPS_pubpropertyMethodSignature

Gets an object containing the method signature.

System_CAPS_pubpropertyProperties

Gets an IDictionary that represents a collection of the message's properties.(Inherited from IMessage.)

System_CAPS_pubpropertyTypeName

Gets the full Type name of the specific object that the call is destined for.

System_CAPS_pubpropertyUri

Gets the URI of the specific object that the call is destined for.

NameDescription
System_CAPS_pubmethodGetArg(Int32)

Gets a specific argument as an Object.

System_CAPS_pubmethodGetArgName(Int32)

Gets the name of the argument passed to the method.

A method message is used to send information to and from remote methods. For example, messages used for remote method calls implement the IMethodMessage interface.

The following example code shows a custom proxy that overrides RealProxy.Invoke in order to write the message information to the console and return immediately without making a remote call.

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class MyProxyClass : RealProxy
{
   private Object  myObjectInstance  = null;
   private Type    myType      = null;

   public MyProxyClass(Type argType) : base(argType)
   {
      myType = argType;
      myObjectInstance = Activator.CreateInstance(argType);
   }

   // Overriding the Invoke method of RealProxy.
   public override IMessage Invoke(IMessage message)
   {
      IMethodMessage myMethodMessage = (IMethodMessage)message;

      Console.WriteLine("**** Begin Invoke ****");
      Console.WriteLine("\tType is : " + myType);
      Console.WriteLine("\tMethod name : " +  myMethodMessage.MethodName);

      for (int i=0; i < myMethodMessage.ArgCount; i++)
      {
         Console.WriteLine("\tArgName is : " + myMethodMessage.GetArgName(i));
         Console.WriteLine("\tArgValue is: " + myMethodMessage.GetArg(i));
      }

      if(myMethodMessage.HasVarArgs)
          Console.WriteLine("\t The method have variable arguments!!");
      else
          Console.WriteLine("\t The method does not have variable arguments!!");

      // Dispatch the method call to the real object.
      Object returnValue = myType.InvokeMember( myMethodMessage.MethodName, BindingFlags.InvokeMethod, null,
                                           myObjectInstance, myMethodMessage.Args );
      Console.WriteLine("**** End Invoke ****");

      // Build the return message to pass back to the transparent proxy.
      ReturnMessage myReturnMessage = new ReturnMessage( returnValue, null, 0, null,
          (IMethodCallMessage)message );
      return myReturnMessage;
   }
}

.NET Framework
Available since 1.1
Return to top
Show:
© 2016 Microsoft