2013-02-27 160 views
6

我有可變C#變量名字符串

public string MyVariable; 

我需要使用變量的名稱字符串。例如:

var a = MyVariable.NameVariable(); 
// a = "MyVariable" 

我該怎麼做?

我想創建你的miniORM(NHibernate太重,需要一個單獨的庫)。目前的問題是我必須指出一堆常量。例如:

public const string FieldIdRules = "idRules" 

然後在關係samonapisannom事件探查器中進行事務處理。 我看到Hibernate不需要指定文本值(對於字段的比例)。我想實施相同的。

對不起我的英文不好

+1

這個堆棧溢出的回答可以幫助你: http://stackoverflow.com/questions/2566101/how-to-get-variable -name-使用反射 – 2013-02-27 04:06:18

+0

http://stackoverflow.com/questions/2566101/how-to-get-variable-name-using-reflection 感謝阿龍Blenkush8 – user2071747 2013-02-27 04:16:35

回答

2

哈克的方法,你可以通過Expression得到:

string myVariable = string.Empty; 
Expression<Func<object>> expression =() => myVariable; 

string name = (expression.Body as MemberExpression).Member.Name; 
+0

,它會告訴你在編譯時,如果該名稱已更改。 – leppie 2013-02-27 15:29:32

1

如果可以訪問由名的變量,你已經有了它的名字,所以輸入"MyVariable"

如果你重新分配了它,這是不可能的。值不保存變量名稱的歷史記錄。


因此,爲了處理場列映射,我會建議一個Dictionary。反思是一種可能性,但對於像這樣簡單的任務來說,這是不必要的複雜。