私は文字列として呼び出し元の名前を取得するためにCallerMemberNameAttributeを使用することができますC#とVB.Netで:私はC++/CLIで同じことをしたいと思っ何とか、私はそれを得ることができないC++/CLI:C++/CLIでCallerMemberNameAttributeを使用するにはどうすればよいですか?
public void Caller([CallerMemberName]string memberName = "")
{
Debug.Print(memberName);
}
ワーキング。いくつかの構造を試してみましたが、私はC++/CLIコンパイラがこの属性をサポートしているかどうか疑問に思っています。ここ
は(簡体字)の実装である:C#アプリケーションでこのメソッドを呼び出すとき
using namespace System::Runtime::CompilerServices;
public ref class InvokeExample
{
Invoke([CallerMemberName][Optional]String^ name)
{
Debug::Print(name);
}
}
名前の値がヌルです。また、属性DefaultParameterValueで試してみましたが、どちらも役に立ちませんでした。今、アイデアが不足しています。
明白な答えは、なぜC#で実装しないのでしょうか? この特定のケースでは、私はC++/CLIに限定されています。
試しても意味がありませんが、これはC++コンパイラでは実装されていません。 C++/CLIは2005年にフリーズされました。[StackTraceクラス](http://stackoverflow.com/a/2652591/17034)を使用する必要があります。 –
ハンスの提案は、パフォーマンス上の厳しいペナルティを意味することに注意してください。 –