2013-02-27 122 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。反思是一种可能性,但对于像这样简单的任务来说,这是不必要的复杂。