2012-11-15 66 views
-1

可以在不使用Reflection的情況下從dotnet中的代碼獲取屬性名稱?不帶System.Reflection的屬性名稱

int PropWithNiceName 
{ 
get {Console.Writeline(???)} 
} 
+0

你想要哪個屬性? –

+3

是的,絕對:'Console.Writeline(「PropWithNiceName」)'將工作:) – dasblinkenlight

+0

如上所述 - 你將不可避免地知道get方法中的屬性名稱,那麼爲什麼你必須有一種方法來去取它 - 只是硬編碼它。 – LukeHennerley

回答

3

是;你可以使用新的[CallerMemberName]屬性:

static string MemberName([CallerMemberName] string name = null) { 
    return name; 
} 

int MyProperty { 
    set { 
     Console.WriteLine(MemberName()); 
    } 
} 
+1

只能在.NET 4.5和C#5.0中工作 – Euphoric

+0

有趣的是,這樣做會導致代碼:Console.WriteLine(「MyProperty」);實際上在編譯後生成... –