IMethodReturnMessage.OutArgCount 属性     
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取方法调用中标记为 ref 或 out 参数的参数的数目。
public:
 property int OutArgCount { int get(); };public int OutArgCount { get; }public int OutArgCount { [System.Security.SecurityCritical] get; }member this.OutArgCount : int[<get: System.Security.SecurityCritical>]
member this.OutArgCount : intPublic ReadOnly Property OutArgCount As Integer属性值
方法调用中标记为 ref 或 out 参数的参数的数目。
- 属性
例外
直接调用方通过引用接口进行调用,且没有基础结构权限。
示例
以下示例代码演示了一个自定义代理,该代理重写 RealProxy.Invoke 以将返回消息信息写入控制台。
virtual IMessage^ Invoke( IMessage^ myMessage ) override
{
   IMethodCallMessage^ myCallMessage = (IMethodCallMessage^)( myMessage );
   IMethodReturnMessage^ myIMethodReturnMessage =
      RemotingServices::ExecuteMessage( myMarshalByRefObject, myCallMessage );
   Console::WriteLine( "Method name : {0}", myIMethodReturnMessage->MethodName );
   Console::WriteLine( "The return value is : {0}", myIMethodReturnMessage->ReturnValue );
   // Get number of 'ref' and 'out' parameters.
   int myArgOutCount = myIMethodReturnMessage->OutArgCount;
   Console::WriteLine( "The number of 'ref', 'out' parameters are : {0}",
      myIMethodReturnMessage->OutArgCount );
   // Gets name and values of 'ref' and 'out' parameters.
   for ( int i = 0; i < myArgOutCount; i++ )
   {
      Console::WriteLine( "Name of argument {0} is '{1}'.",
         i, myIMethodReturnMessage->GetOutArgName( i ) );
      Console::WriteLine( "Value of argument {0} is '{1}'.",
         i, myIMethodReturnMessage->GetOutArg( i ) );
   }
   Console::WriteLine();
   array<Object^>^myObjectArray = myIMethodReturnMessage->OutArgs;
   for ( int i = 0; i < myObjectArray->Length; i++ )
      Console::WriteLine( "Value of argument {0} is '{1}' in OutArgs",
         i, myObjectArray[ i ] );
   return myIMethodReturnMessage;
}
public override IMessage Invoke(IMessage myMessage)
{
   IMethodCallMessage myCallMessage = (IMethodCallMessage)myMessage;
   IMethodReturnMessage myIMethodReturnMessage =
      RemotingServices.ExecuteMessage(myMarshalByRefObject, myCallMessage);
   Console.WriteLine("Method name : " + myIMethodReturnMessage.MethodName);
   Console.WriteLine("The return value is : " + myIMethodReturnMessage.ReturnValue);
   // Get number of 'ref' and 'out' parameters.
   int myArgOutCount = myIMethodReturnMessage.OutArgCount;
   Console.WriteLine("The number of 'ref', 'out' parameters are : " +
      myIMethodReturnMessage.OutArgCount);
   // Gets name and values of 'ref' and 'out' parameters.
   for(int i = 0; i < myArgOutCount; i++)
   {
      Console.WriteLine("Name of argument {0} is '{1}'.",
         i, myIMethodReturnMessage.GetOutArgName(i));
      Console.WriteLine("Value of argument {0} is '{1}'.",
         i, myIMethodReturnMessage.GetOutArg(i));
   }
   Console.WriteLine();
   object[] myObjectArray = myIMethodReturnMessage.OutArgs;
   for(int i = 0; i < myObjectArray.Length; i++)
      Console.WriteLine("Value of argument {0} is '{1}' in OutArgs",
         i, myObjectArray[i]);
   return myIMethodReturnMessage;
}
Public Overrides Function Invoke(myMessage As IMessage) As IMessage
   Dim myCallMessage As IMethodCallMessage = CType(myMessage, IMethodCallMessage)
   Dim myIMethodReturnMessage As IMethodReturnMessage = RemotingServices. _
      ExecuteMessage(myMarshalByRefObject, myCallMessage)
   Console.WriteLine("Method name : " + myIMethodReturnMessage.MethodName)
   Console.WriteLine("The return value is : " + myIMethodReturnMessage.ReturnValue)
   
   ' Get number of 'ref' and 'out' parameters.
   Dim myArgOutCount As Integer = myIMethodReturnMessage.OutArgCount
   Console.WriteLine("The number of 'ref', 'out' parameters are : " + _
      myIMethodReturnMessage.OutArgCount.ToString())
   ' Gets name and values of 'ref' and 'out' parameters.
   Dim i As Integer
   For i = 0 To myArgOutCount - 1
      Console.WriteLine("Name of argument {0} is '{1}'.", i, _
         myIMethodReturnMessage.GetOutArgName(i))
      Console.WriteLine("Value of argument {0} is '{1}'.", i, _
         myIMethodReturnMessage.GetOutArg(i))
   Next i
   Console.WriteLine()
   Dim myObjectArray As Object() = myIMethodReturnMessage.OutArgs
   For i = 0 To myObjectArray.Length - 1
      Console.WriteLine("Value of argument {0} is '{1}' in OutArgs", i, myObjectArray(i))
   Next i
   Return myIMethodReturnMessage
End Function 'Invoke