次の方法で共有


IMethodMessage.MethodName プロパティ

呼び出されたメソッドの名前を取得します。

ReadOnly Property MethodName As String
[C#]
string MethodName {get;}
[C++]
__property String* get_MethodName();
[JScript]
function get MethodName() : String;

プロパティ値

呼び出されたメソッドの名前。

例外

例外の種類 条件
SecurityException 直前の呼び出し元は、インターフェイスへの参照を通じて呼び出しを実行します。この呼び出し元には、インフラストラクチャ アクセス許可がありません。

使用例

[Visual Basic, C#, C++] RealProxy.Invoke をオーバーライドして、メソッドの名前をコンソールに書き込むカスタム プロキシについては、次のコード例を参照してください。

 
' Overriding the Invoke method of RealProxy.
Public Overrides Function Invoke(message As IMessage) As IMessage
   Dim myMethodMessage As IMethodMessage = CType(message, IMethodMessage)
   
   Console.WriteLine("**** Begin Invoke ****")
   Console.WriteLine(ControlChars.Tab + "Type is : " + myType.ToString())
   Console.WriteLine(ControlChars.Tab + "Method name : " + myMethodMessage.MethodName)
   
   Dim i As Integer
   For i = 0 To myMethodMessage.ArgCount - 1
      Console.WriteLine(ControlChars.Tab + "ArgName is : " + myMethodMessage.GetArgName(i))
      Console.WriteLine(ControlChars.Tab + "ArgValue is: " + myMethodMessage.GetArg(i))
   Next i
   
   If myMethodMessage.HasVarArgs Then
      Console.WriteLine(ControlChars.Tab + " The method have variable arguments!!")
   Else
      Console.WriteLine(ControlChars.Tab + " The method does not have variable arguments!!")
   End If 
   ' Dispatch the method call to the real object.
   Dim returnValue As Object = myType.InvokeMember(myMethodMessage.MethodName, _
                  BindingFlags.InvokeMethod, Nothing, myObjectInstance, myMethodMessage.Args)
   Console.WriteLine("**** End Invoke ****")
   
   ' Build the return message to pass back to the transparent proxy.
   Dim myReturnMessage As New ReturnMessage(returnValue, Nothing, 0, Nothing, _
                                                      CType(message, IMethodCallMessage))
   Return myReturnMessage
End Function 'Invoke

[C#] 
// Overriding the Invoke method of RealProxy.
public override IMessage Invoke(IMessage message)
{
   IMethodMessage myMethodMessage = (IMethodMessage)message;

   Console.WriteLine("**** Begin Invoke ****");
   Console.WriteLine("\tType is : " + myType);
   Console.WriteLine("\tMethod name : " +  myMethodMessage.MethodName);

   for (int i=0; i < myMethodMessage.ArgCount; i++)
   {
      Console.WriteLine("\tArgName is : " + myMethodMessage.GetArgName(i));
      Console.WriteLine("\tArgValue is: " + myMethodMessage.GetArg(i));
   }

   if(myMethodMessage.HasVarArgs)
       Console.WriteLine("\t The method have variable arguments!!");
   else
       Console.WriteLine("\t The method does not have variable arguments!!");

   // Dispatch the method call to the real object.
   Object returnValue = myType.InvokeMember( myMethodMessage.MethodName, BindingFlags.InvokeMethod, null,
                                        myObjectInstance, myMethodMessage.Args );
   Console.WriteLine("**** End Invoke ****");

   // Build the return message to pass back to the transparent proxy.
   ReturnMessage myReturnMessage = new ReturnMessage( returnValue, null, 0, null,
       (IMethodCallMessage)message );
   return myReturnMessage;
}

[C++] 
// Overriding the Invoke method of RealProxy.
public:
IMessage* Invoke(IMessage* message) 
{
    IMethodMessage* myMethodMessage = dynamic_cast<IMethodMessage*>(message);

    Console::WriteLine(S"**** Begin Invoke ****");
    Console::WriteLine(S"\tType is : {0}", myType);
    Console::WriteLine(S"\tMethod name : {0}", myMethodMessage->MethodName);

    for (int i=0; i < myMethodMessage->ArgCount; i++) 
    {
        Console::WriteLine(S"\tArgName is : {0}", myMethodMessage->GetArgName(i));
        Console::WriteLine(S"\tArgValue is: {0}", myMethodMessage->GetArg(i));
    }

    if (myMethodMessage->HasVarArgs)
        Console::WriteLine(S"\t The method have variable arguments!!");
    else
        Console::WriteLine(S"\t The method does not have variable arguments!!");

    // Dispatch the method call to the real Object*.
    Object* returnValue = myType->InvokeMember(myMethodMessage->MethodName, BindingFlags::InvokeMethod, 0,
        myObjectInstance, myMethodMessage->Args);
    Console::WriteLine(S"**** End Invoke ****");

    // Build the return message to pass back to the transparent proxy.
    ReturnMessage* myReturnMessage = new ReturnMessage(returnValue, 0, 0, 0,
        dynamic_cast<IMethodCallMessage*>(message));
    return myReturnMessage;
}

[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 セキュリティ:

参照

IMethodMessage インターフェイス | IMethodMessage メンバ | System.Runtime.Remoting.Messaging 名前空間