다음을 통해 공유


IMethodCallMessage.InArgCount 속성

정의

out 매개 변수로 표시되지 않는 호출의 인수 개수를 가져옵니다.

public:
 property int InArgCount { int get(); };
public int InArgCount { get; }
public int InArgCount { [System.Security.SecurityCritical] get; }
member this.InArgCount : int
[<get: System.Security.SecurityCritical>]
member this.InArgCount : int
Public ReadOnly Property InArgCount As Integer

속성 값

out 매개 변수로 표시되지 않는 호출의 인수 개수입니다.

특성

예외

직접 실행 호출자가 인터페이스에 대한 참조를 통해 호출하며 인프라 권한이 없는 경우

예제

다음 예제 코드에서는 호출 메시지 정보가 콘솔에 쓰려면 RealProxy.Invoke를 재정의 하는 사용자 지정 프록시를 보여 줍니다.

   virtual IMessage^ Invoke( IMessage^ myIMessage ) override
   {
      Console::WriteLine( "MyProxy::Invoke Start" );
      Console::WriteLine( "" );
      ReturnMessage^ myReturnMessage = nullptr;
      if ( dynamic_cast<IMethodCallMessage^>(myIMessage) )
      {
         Console::WriteLine( "Message is of type 'IMethodCallMessage*'." );
         Console::WriteLine( "" );
         IMethodCallMessage^ myIMethodCallMessage;
         myIMethodCallMessage = dynamic_cast<IMethodCallMessage^>(myIMessage);
         Console::WriteLine( "InArgCount is  : {0}", myIMethodCallMessage->InArgCount );
         IEnumerator^ myEnum = myIMethodCallMessage->InArgs->GetEnumerator();
         while ( myEnum->MoveNext() )
         {
            Object^ myObj = safe_cast<Object^>(myEnum->Current);
            Console::WriteLine( "InArgs is : {0}", myObj );
         }

         for ( int i = 0; i < myIMethodCallMessage->InArgCount; i++ )
         {
            Console::WriteLine( "GetArgName({0}) is : {1}", i, myIMethodCallMessage->GetArgName( i ) );
            Console::WriteLine( "GetInArg({0}) is : {0}", i, myIMethodCallMessage->GetInArg( i ) );

         }
         Console::WriteLine( "" );
      }
      else
      if ( dynamic_cast<IMethodReturnMessage^>(myIMessage) )
            Console::WriteLine( "Message is of type 'IMethodReturnMessage*'." );

      // Build Return Message 
      myReturnMessage = gcnew ReturnMessage( 5,nullptr,0,nullptr,dynamic_cast<IMethodCallMessage^>(myIMessage) );
      Console::WriteLine( "MyProxy::Invoke - Finish" );
      return myReturnMessage;
   }
};

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

};

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

' The class used to obtain Metadata.
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
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

적용 대상