Reflectionによるプロパティ名の取得

先日、クラスの持つプロパティ名をExcelファイルに列挙すると言った作業を行うことになりました。
対象となる複数のクラスから特定の条件を満たすプロパティの名前のみを列挙する必要があり、
始めは手作業で地道にコピーしていたのですが、途中でReflectionを用いれば自動で列挙可能だと気付きました。
プロパティには列挙条件を示す属性が付与されていたのですが、
属性を取得できることを失念していました。

取得には以下のようなコードを使用しました。
※正確に再現したコードではないのでミスなどあるかもしれません


private static List<string> GetHogeIsHugaPropertyNames(Type type) {
    return type.GetProperties()
               .Select(p => (p, Attribute.GetCustomAttribute(p, typeof(HogeAttribute)) as HogeAttribute))
               .Where(x => x.Item2 != null && x.Item2.IsHuga)
               .Select(x => x.p.Name)
               .ToList();
}

これに気付かなかったため時間を少し溶かしてしまいました。
何か作業する際は開始前に作業手順を確認し、
繰り返し手作業を行う必要があるようならどうにか自動化できないかを考えるようにしたいと思います。

コメントを残す