.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