呼び出し内の引数のうち、 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 セキュリティ:
- SecurityPermission (インフラストラクチャ コードを操作するために必要なアクセス許可)要求値: SecurityAction.LinkDemand; アクセス許可値: SecurityPermissionFlag.Infrastructure
参照
IMethodCallMessage インターフェイス | IMethodCallMessage メンバ | System.Runtime.Remoting.Messaging 名前空間