在C#和VB.Net我可以使用CallerMemberNameAttribute得到調用以字符串形式的名稱:C++/CLI:如何在C++/CLI中使用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#應用這個方法名的值爲空。還嘗試使用屬性DefaultParameterValue但它也沒有幫助。現在用完了想法。
明顯的答案是,爲什麼不在C#中實現? 那麼,在這個特定的情況下,我僅限於C++/CLI。
沒有意義的嘗試,這不是在C++編譯器中實現的。 C++/CLI在2005年被凍結。你必須使用[StackTrace class](http://stackoverflow.com/a/2652591/17034)。 –
請注意漢斯的建議意味着嚴重的表現懲罰。 –