4

C# で、リフレクションまたはその他のメソッドを介して、オブジェクトのすべてのスーパークラス (具体的および抽象的、主に具体的なクラスに関心がある) のリストを返すことは可能ですか? たとえば、「Tiger」クラスを渡すと、次のように返されます。

  1. ネコ
  2. 動物
  3. 物体
4

2 に答える 2

10
static void VisitTypeHierarchy(Type type, Action<Type> action) {
    if (type == null) return;
    action(type);
    VisitTypeHierarchy(type.BaseType, action);
}

例:

VisitTypeHierarchy(typeof(MyType), t => Console.WriteLine(t.Name));

プロパティを使用すると、抽象クラスを簡単に扱うことができType.IsAbstractます。

于 2009-12-04T03:52:18.703 に答える
0

もちろん、「GetType()」メソッドを使用して、提供されたオブジェクトのタイプを取得してください。各 Type インスタンスには、直接継承された型を提供する" BaseType " プロパティがあります。null BaseType (つまり、オブジェクト) を持つ Type が見つかるまで、型を再帰的にたどることができます。

于 2009-12-04T03:53:48.573 に答える