次の方法で共有


IMethodCallMessage.InArgCount プロパティ

呼び出し内の引数のうち、 out パラメータとしてマークされていない引数の数を取得します。

ReadOnly Property InArgCount As Integer
[C#]
int InArgCount {get;}
[C++]
__property int get_InArgCount();
[JScript]
function get InArgCount() : int;

プロパティ値

呼び出し内の引数のうち、 out パラメータとしてマークされていない引数の数。

例外

例外の種類 条件
SecurityException 直前の呼び出し元は、インターフェイスへの参照を通じて呼び出しを実行します。この呼び出し元には、インフラストラクチャ アクセス許可がありません。

使用例

[Visual Basic, C#, C++] RealProxy.Invoke をオーバーライドして、呼び出しメッセージの情報をコンソールに書き込むカスタム プロキシについては、次のコード例を参照してください。

 
Public Overrides Function Invoke(ByVal myIMessage As IMessage) As IMessage
   Console.WriteLine("MyProxy.Invoke Start")
   Console.WriteLine("")

   If TypeOf myIMessage Is IMethodCallMessage Then
      Console.WriteLine("Message is of type 'IMethodCallMessage'.")
      Console.WriteLine("")

      Dim myIMethodCallMessage As IMethodCallMessage
      myIMethodCallMessage = CType(myIMessage, IMethodCallMessage)

      Console.WriteLine("InArgCount is : " + myIMethodCallMessage.InArgCount.ToString)
      Dim myObj As Object
      For Each myObj In myIMethodCallMessage.InArgs
         Console.WriteLine("InArgs is : " + myObj.ToString())
      Next

      Dim i As Integer
      For i = 0 To myIMethodCallMessage.InArgCount - 1
         Console.WriteLine("GetArgName(" + i.ToString() + ") is : " + myIMethodCallMessage.GetArgName(i))
         Console.WriteLine("GetInArg(" + i.ToString() + ") is : " + myIMethodCallMessage.GetInArg(i).ToString)
      Next i

      Console.WriteLine("")
   ElseIf TypeOf myIMessage Is IMethodReturnMessage Then
      Console.WriteLine("Message is of type 'IMethodReturnMessage'.")
   End If

   ' Build Return Message
   Dim myReturnMessage As New ReturnMessage(5, Nothing, 0, Nothing, _
                              CType(myIMessage, IMethodCallMessage))

   Console.WriteLine("MyProxy.Invoke - Finish")
   Return myReturnMessage

End Function 'Invoke



   End Class 'MyProxy

   ' The class used to obtain Metadata.
   Public Class MyMarshalByRefClass
Inherits MarshalByRefObject

Public Function MyMethod(ByVal str As String, ByVal dbl As Double, ByVal i As Integer) As Integer
   Console.WriteLine("MyMarshalByRefClass.MyMethod {0} {1} {2}", str, dbl, i)
   Return 0
End Function 'MyMethod
   End Class 'MyMarshalByRefClass


[C#] 

      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;
      }
   }

[C++] 

public:
    IMessage* Invoke(IMessage* myIMessage) 
    {
        Console::WriteLine(S"MyProxy::Invoke Start");
        Console::WriteLine(S"");
        ReturnMessage* myReturnMessage = 0;

        if (dynamic_cast<IMethodCallMessage*>(myIMessage)) 
        {
            Console::WriteLine(S"Message is of type 'IMethodCallMessage*'.");
            Console::WriteLine(S"");

            IMethodCallMessage* myIMethodCallMessage;
            myIMethodCallMessage = dynamic_cast<IMethodCallMessage*>(myIMessage);
            Console::WriteLine(S"InArgCount is  : {0}", __box(myIMethodCallMessage->InArgCount));

            IEnumerator* myEnum = myIMethodCallMessage->InArgs->GetEnumerator();
            while (myEnum->MoveNext()) 
            {
                Object* myObj = __try_cast<Object*>(myEnum->Current);

                Console::WriteLine(S"InArgs is : {0}", myObj);
            }

            for (int i=0; i<myIMethodCallMessage->InArgCount; i++) 
            {
                Console::WriteLine(S"GetArgName({0}) is : {1}", __box(i), myIMethodCallMessage->GetArgName(i));
                Console::WriteLine(S"GetInArg({0}) is : {0}", __box(i), myIMethodCallMessage->GetInArg(i));
            }
            Console::WriteLine(S"");
        }
        else if (dynamic_cast<IMethodReturnMessage*>(myIMessage))
            Console::WriteLine(S"Message is of type 'IMethodReturnMessage*'.");

        // Build Return Message 
        myReturnMessage = new ReturnMessage( __box(5), 0, 0, 0, dynamic_cast<IMethodCallMessage*>(myIMessage));

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


// The class used to obtain Metadata.
public __gc class MyMarshalByRefClass : public MarshalByRefObject 
{
public:
    int MyMethod(String* str, double dbl, int i) 
    {
        Console::WriteLine(S"MyMarshalByRefClass::MyMethod {0} {1} {2}", str, __box(dbl), __box(i));
        return 0;
    }
};

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

IMethodCallMessage インターフェイス | IMethodCallMessage メンバ | System.Runtime.Remoting.Messaging 名前空間