2013-02-27 60 views
6

Tôi có biếnC# Tên biến Để Chuỗi

public string MyVariable; 

tôi cần sử dụng tên của biến như chuỗi. Ví dụ:

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

Tôi có thể làm như thế nào?

Tôi muốn tạo miniORM của bạn (NHibernate quá nặng và yêu cầu thư viện riêng). Tại thời điểm này vấn đề là tôi phải chỉ ra một loạt các hằng số. Ví dụ:

public const string FieldIdRules = "idRules" 

Và sau đó thực hiện giao dịch liên quan đến hồ sơ samonapisannom. Tôi thấy rằng Hibernate không cần phải xác định giá trị văn bản (cho tỷ lệ trường). Tôi muốn thực hiện tương tự.

Xin lỗi tôi xấu tiếng anh

+1

này Stack Overflow câu trả lời có thể giúp bạn: http://stackoverflow.com/questions/2566101/how-to-get-variable -name-using-reflection –

+0

http://stackoverflow.com/questions/2566101/how-to-get-variable-name-using-reflection cảm ơn Aaron Blenkush8 – user2071747

Trả lời

2

cách tiếp cận Hacky, bạn có thể nhận được thông qua Expression:

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

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

Và nó sẽ cho bạn biết vào thời gian biên dịch nếu tên được thay đổi. – leppie

1

Nếu bạn có thể truy cập vào một biến theo tên, bạn đã có tên của nó, vì vậy gõ "MyVariable".

Nếu bạn đã gán lại, điều này là không thể. Giá trị không giữ một lịch sử của các tên biến ở đâu đó.


Vì vậy, để xử lý ánh xạ trường đến cột, tôi sẽ đề xuất một Dictionary. Phản ánh là một khả năng, nhưng không cần thiết phức tạp cho một nhiệm vụ đơn giản như thế.

Các vấn đề liên quan