.net - Get class name and property name from an expression () => MyClass.Name -


this mot duplicate, couldn't find proper question.

i want "myclass.name" () => myclass.name. how define method parameter , how convert expression string?

that expression<func<string>>, have:

void foo(expression<func<string>> selector) {...} 

or

void foo<t>(expression<func<t>> selector) {...} 

however, note syntax myclass.name refers static property; if want instance property might need more expression<func<myclass,string>> - example:

static void foo<tsource, tvalue>(     expression<func<tsource, tvalue>> selector) {  } static void main() {      foo((myclass obj) => obj.name);         } 

as implementation; in simple case, can expect body memberexpression, so:

static void foo<tsource, tvalue>(     expression<func<tsource, tvalue>> selector) {     var member = ((memberexpression)selector.body).member;     console.writeline(member.reflectedtype.name + "." + member.name); } 

however, more complex in general case. work if use static member:

static void foo<tvalue>(     expression<func<tvalue>> selector) {     var member = ((memberexpression)selector.body).member;     console.writeline(member.reflectedtype.name + "." + member.name); } 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -