當前位置: 首頁>>代碼示例>>C#>>正文


C# IMethodCallMessage接口代碼示例

本文整理匯總了C#中System.Runtime.Remoting.Messaging.IMethodCallMessage接口的典型用法代碼示例。如果您正苦於以下問題:C# IMethodCallMessage接口的具體用法?C# IMethodCallMessage怎麽用?C# IMethodCallMessage使用的例子?那麽, 這裏精選的接口代碼示例或許可以為您提供幫助。


IMethodCallMessage接口屬於System.Runtime.Remoting.Messaging命名空間,在下文中一共展示了IMethodCallMessage接口的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: MyProxy

//引入命名空間
using System;
using System.Collections;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Proxies;
using System.Runtime.Remoting.Messaging;
using System.Security.Permissions;

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.

   [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
   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.
   [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
   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
   {
      [SecurityPermission(SecurityAction.LinkDemand)]
      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.");
      }
   }
}
開發者ID:.NET開發者,項目名稱:System.Runtime.Remoting.Messaging,代碼行數:98,代碼來源:IMethodCallMessage


注:本文中的System.Runtime.Remoting.Messaging.IMethodCallMessage接口示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。