- 70 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 21:45:22 ]
- >>68
こういうユーティリティクラスを作っておくとか。 ttp://d.hatena.ne.jp/NyaRuRu/20071228/p2 public static class Reflector { static PropertyInfo GetPropertyInfo(this Expression expression) { var findprop = default(Func<Expression, PropertyInfo>); findprop = expr => { switch (expr.NodeType) { case ExpressionType.Lambda: return findprop((expr as LambdaExpression).Body); case ExpressionType.Quote: return findprop((expr as UnaryExpression).Operand); case ExpressionType.MemberAccess: return (expr as MemberExpression).Member as PropertyInfo; default: return null; } }; return findprop(expression); } public static PropertyInfo Property<TArg, TResult>(Expression<Func<TArg, TResult>> expr) { return expr.GetPropertyInfo(); } } 使い方。 var defaultValue = Reflector.Property((MyComponent2 comp) => comp.MyProperty).GetCustomAttributes(typeof(DefaultValueAttribute), false)[0]; これでリファクタリングしても一緒に名前が変わるはず。
|

|