In C# und VB.Net kann ich das CallerMemberNameAttribute verwende den Namen des Aufrufer als String zu erhalten:C++/CLI: Wie verwende ich das CallerMemberNameAttribute in C++/CLI?
public void Caller([CallerMemberName]string memberName = "")
{
Debug.Print(memberName);
}
Ich möchte das gleiche in C++/CLI tun, aber irgendwie kann ich es nicht bekommen Arbeiten. Ich habe mehrere Konstruktionen ausprobiert und frage mich, ob der C++/CLI-Compiler dieses Attribut unterstützt.
Hier ist ein (vereinfachtes) Umsetzung:
using namespace System::Runtime::CompilerServices;
public ref class InvokeExample
{
Invoke([CallerMemberName][Optional]String^ name)
{
Debug::Print(name);
}
}
Wenn dieses Verfahren in einer Anwendung C# Aufrufen der Wert von name null ist. Auch versucht mit dem Attribut DefaultParameterValue aber es hat auch nicht geholfen. Jetzt haben wir keine Ideen mehr.
Offensichtliche Antwort wäre, warum nicht in C# implementieren? Nun, in diesem speziellen Fall bin ich auf C++/CLI beschränkt.
Kein Punkt beim Versuch, dies ist nicht im C++ - Compiler implementiert. C++/CLI wurde 2005 eingefroren. Sie müssen die [StackTrace-Klasse] (http://stackoverflow.com/a/2652591/17034) verwenden. –
Seien Sie sich bewusst, dass der Vorschlag von Hans eine schwerwiegende Leistungseinbuße beinhaltet. –