1

C# と VB.Net では、 CallerMemberNameAttributeを使用して呼び出し元の名前を文字列として取得できます。

public void Caller([CallerMemberName]string memberName = "")
{
   Debug.Print(memberName);
}

C++/CLI で同じことをしたいのですが、どういうわけかうまくいきません。いくつかの構造を試してみましたが、C++/CLI コンパイラがこの属性をサポートしているかどうか疑問に思い始めています。

(簡略化された)実装は次のとおりです。

using namespace System::Runtime::CompilerServices;
public ref class InvokeExample
{
    Invoke([CallerMemberName][Optional]String^ name)
    {
        Debug::Print(name);
    }
}

C# アプリケーションでこのメソッドを呼び出すと、name の値が null になります。属性DefaultParameterValueも試しましたが、どちらも役に立ちませんでした。今、アイデアが不足しています。

明白な答えは、なぜ C# で実装しないのですか? この特定のケースでは、C++/CLI に限定されています。

4

1 に答える 1