>>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];
これでリファクタリングしても一緒に名前が変わるはず。