.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
Post a Comment