IMethodCallMessage.InArgs プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
out
パラメーターとしてマークされていない引数の配列を取得します。
public:
property cli::array <System::Object ^> ^ InArgs { cli::array <System::Object ^> ^ get(); };
public object[] InArgs { get; }
public object[] InArgs { [System.Security.SecurityCritical] get; }
member this.InArgs : obj[]
[<get: System.Security.SecurityCritical>]
member this.InArgs : obj[]
Public ReadOnly Property InArgs As Object()
プロパティ値
Object[]
out
パラメーターとしてマークされていない引数の配列。
- 属性
例外
即時呼び出し元は、インターフェイスへの参照を使用して呼び出しを行い、インフラストラクチャのアクセス許可はありません。
例
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
注釈
InArgsプロパティは、 メソッドと GetInArg メソッドでInArgCount同じ機能を実現できるため冗長ですが、実装者がすべての引数を取得するタイミングを理解している場合は、パフォーマンスの最適化を使用できる場合があります。
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET