次の方法で共有


IMethodCallMessage.InArgs プロパティ

out パラメータとしてマークされていない引数の配列を取得します。

ReadOnly Property InArgs As Object ()
[C#]
object[] InArgs {get;}
[C++]
__property Object* get_InArgs();
[JScript]
function get InArgs() : Object[];

プロパティ値

out パラメータとしてマークされていない引数の配列。

例外

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

解説

InArgs プロパティは、 InArgCount メソッドと GetInArg メソッドを使用しても同じ機能を果たすことができるため冗長ですが、すべての引数が取得されるタイミングがわかっている場合には、このプロパティを実装することでパフォーマンスを最適化できることがあります。

使用例

 
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 名前空間