读书人

【求证求摆脱】取变量对象的名称

发布时间: 2012-09-24 13:49:41 作者: rapoo

【求证,求解脱】取变量,对象的名称,不知道可否实现
1.我现在有 字符串对象 string userName="Tearer";
问:我要怎么才能取到我定义的字符串变量的名字,而不是值,也就是userName这个
2.我现在有 Users user=new Users(); 对象
问:我怎么才能取到我定义的对象的名字,也就是Users这个

前提是不用反射,不遍历。

我的用处大概就是拼接SQL语句的时候,我不希望用字符串值写死,而是拿对象的名称直接取出拼接到SQL里。
如"select * from table where id=3 order by "+取名(userName)

我不确定能否做到,所以求解脱。我真心不想在这个实体类为每一个字段定义常量来达到目的。
谢谢!

[解决办法]
取变量名类名之类的功能就是反射了,你不用反射是做不到的,设计反射机制的目的最初也就是为了取得变量名和类名之类的,

你应该用反射,实体类的属性和字段名一一对应,这样你可以用反射来取得所有实体类的属性,然后生成sql语句,

不过你没必要自己实现,还不如用hibernate之类的框架,或者用linq,
[解决办法]
实际上用一个字典就解决你的问题了。
事实上.NET框架库自己就是这么用的,比如说Control的Name属性,作为Controls集合的索引。

Dictionary<string, object> Vars = new Dictionary<string, object>();
Vars.Add("userName", userName);
Vars.Add("user", user);
...
sql = "select * from table where id=3 order by " + Vars["UserName"].ToString();

读书人网 >C#

热点推荐