とりあえず抜き出してみる
相変わらず文を書くのが苦手な私はとりあえずコードをぱぱっと書きますよ。
ちなみに、リフレクションでの情報取得方法はこれだけではありません。細かいオプション(BindingFlags)辺りをいじると、より詳細な情報が取得できます。
- サンプルコード
public interface IDummy { } [Serializable] public abstract class AbstractDummy { } [Obsolete] public class ConcreteDummy : AbstractDummy, IDummy { class NestClass { } }
- 出力結果
nest class = ConsoleApplication1.ConcreteDummy+NestClass impl interface = ConsoleApplication1.IDummy super class = ConsoleApplication1.AbstractDummy attribute = System.ObsoleteAttribute
リフレクション用のコード
- ネストクラスの取得
//Nestしたクラスを取得 foreach (var type in typeof(ConcreteDummy).GetNestedTypes(BindingFlags.NonPublic)) { Console.WriteLine("nest class = {0}",type); }
- 実装インターフェースの取得
//インターフェースを取得 foreach (var type in typeof(ConcreteDummy).GetInterfaces()) { Console.WriteLine("impl interface = {0}",type); }
- スーパークラスの取得
Console.WriteLine("super class = {0}", typeof(ConcreteDummy).BaseType);
- 属性の取得
foreach (var obj in typeof(ConcreteDummy).GetCustomAttributes(true)) { Console.WriteLine("attribute = {0}", obj); }