Lire en anglais

Partager via


IMethodCallMessage Interface

Définition

Définit l'interface de message d'appel de méthode.

C#
public interface IMethodCallMessage : System.Runtime.Remoting.Messaging.IMethodMessage
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IMethodCallMessage : System.Runtime.Remoting.Messaging.IMethodMessage
Dérivé
Attributs
Implémente

Exemples

C#
using System;
using System.Collections;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Proxies;
using System.Runtime.Remoting.Messaging;

namespace IMethodCallMessageNS
{
   // MyProxy extends the CLR Remoting RealProxy.
   // In the same class, in the Invoke method, the methods and properties of the
   // IMethodCallMessage are demonstrated.

   public class MyProxy : RealProxy
   {
      public MyProxy(Type myType) : base(myType)
      {
         // This constructor forwards the call to base RealProxy.
         // RealProxy uses the Type to generate a transparent proxy.
      }


      public override IMessage Invoke(IMessage myIMessage)
      {
         Console.WriteLine("MyProxy.Invoke Start");
         Console.WriteLine("");
         ReturnMessage myReturnMessage = null;

         if (myIMessage is IMethodCallMessage)
         {
            Console.WriteLine("Message is of type 'IMethodCallMessage'.");
            Console.WriteLine("");

            IMethodCallMessage myIMethodCallMessage;
            myIMethodCallMessage=(IMethodCallMessage)myIMessage;
            Console.WriteLine("InArgCount is  : " +
                              myIMethodCallMessage.InArgCount.ToString());

            foreach (object myObj in myIMethodCallMessage.InArgs)
            {
               Console.WriteLine("InArgs is : " + myObj.ToString());
            }

            for(int i=0; i<myIMethodCallMessage.InArgCount; i++)
            {
               Console.WriteLine("GetArgName(" +i.ToString() +") is : " +
                                       myIMethodCallMessage.GetArgName(i));
               Console.WriteLine("GetInArg("+i.ToString() +") is : " +
                              myIMethodCallMessage.GetInArg(i).ToString());
            }
            Console.WriteLine("");
         }
         else if (myIMessage is IMethodReturnMessage)
            {
                Console.WriteLine("Message is of type 'IMethodReturnMessage'.");
            }

            // Build Return Message
            myReturnMessage = new ReturnMessage(5,null,0,null,
                                       (IMethodCallMessage)myIMessage);

         Console.WriteLine("MyProxy.Invoke - Finish");
         return myReturnMessage;
      }
   }

   // The class used to obtain Metadata.
   public class MyMarshalByRefClass : MarshalByRefObject
   {
      public int MyMethod(string str, double dbl, int i)
      {
         Console.WriteLine("MyMarshalByRefClass.MyMethod {0} {1} {2}", str, dbl, i);
         return 0;
      }
   }
   // Main class that drives the whole sample.
   public class ProxySample
   {
      public static void Main()
      {
         Console.WriteLine("Generate a new MyProxy.");
         MyProxy myProxy = new MyProxy(typeof(MyMarshalByRefClass));

         Console.WriteLine("Obtain the transparent proxy from myProxy.");
         MyMarshalByRefClass myMarshalByRefClassObj =
                              (MyMarshalByRefClass)myProxy.GetTransparentProxy();

         Console.WriteLine("Calling the Proxy.");
         object myReturnValue = myMarshalByRefClassObj.MyMethod("Microsoft", 1.2, 6);

         Console.WriteLine("Sample Done.");
      }
   }
}

Remarques

Un IMethodCallMessage est généré à la suite d’une méthode appelée sur un objet distant et est utilisé pour transporter les détails de l’appel de méthode distante côté serveur.

Propriétés

ArgCount

Obtient le nombre d'arguments passés à la méthode.

(Hérité de IMethodMessage)
Args

Obtient un tableau d'arguments passés à la méthode.

(Hérité de IMethodMessage)
HasVarArgs

Obtient une valeur indiquant si le message a un nombre variable d'arguments.

(Hérité de IMethodMessage)
InArgCount

Obtient le nombre d'arguments dans l'appel qui ne sont pas marqués comme paramètres out.

InArgs

Obtient un tableau d'arguments qui ne sont pas marqués comme paramètres out.

LogicalCallContext

Obtient LogicalCallContext pour l'appel de méthode en cours.

(Hérité de IMethodMessage)
MethodBase

Obtient le MethodBase de la méthode appelée.

(Hérité de IMethodMessage)
MethodName

Obtient le nom de la méthode appelée.

(Hérité de IMethodMessage)
MethodSignature

Obtient un objet contenant la signature de la méthode.

(Hérité de IMethodMessage)
Properties

Obtient un IDictionary qui représente une collection des propriétés du message.

(Hérité de IMessage)
TypeName

Obtient le nom Type complet de l'objet spécifique auquel l'appel est destiné.

(Hérité de IMethodMessage)
Uri

Obtient l'URI de l'objet spécifique auquel l'appel est destiné.

(Hérité de IMethodMessage)

Méthodes

GetArg(Int32)

Obtient un argument spécifique sous forme de Object.

(Hérité de IMethodMessage)
GetArgName(Int32)

Obtient le nom de l'argument passé à la méthode.

(Hérité de IMethodMessage)
GetInArg(Int32)

Retourne l'argument spécifié qui n'est pas marqué comme paramètre out.

GetInArgName(Int32)

Retourne le nom de l'argument spécifié qui n'est pas marqué comme paramètre out.

S’applique à

Produit Versions
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1