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