首页新闻找找看学习计划

有没有办法搜索到一个类所有子类

0
[已解决问题] 解决于 2012-05-28 21:52

有没有办法搜索到一个类所有子类有没有办法搜索到一个类所有子类

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:40
提问于:2012-05-25 16:51
< >
分享
最佳答案
0

来自Discovering derived types using reflection的代码:

public static List<Type> FindAllDerivedTypes<T>(Assembly assembly)
    {
        var derivedType = typeof(T);
        return assembly
            .GetTypes()
            .Where(t =>
                t != derivedType &&
                derivedType.IsAssignableFrom(t)
                ).ToList();

    } 
奖励园豆:5
dudu | 高人七级 |园豆:39706 | 2012-05-26 16:50

你这个怎么用的啊!!

田麦成 | 园豆:1982 (小虾三级) | 2012-05-27 11:26
 public interface ITest
    {
        void aa();
    }

 public class Testa:ITest
    {
        #region ITest 成员

        public void aa()
        {
            throw new NotImplementedException();
        }

        #endregion
    }   
 public class Testb:ITest
    {
        #region ITest 成员

        public void aa()
        {
            throw new NotImplementedException();
        }

        #endregion
    }

      var list = FindAllDerivedTypes<code.ITest>(typeof(code.ITest).Assembly);


dudu站长威武
拖鞋王子 | 园豆:40 (初学一级) | 2012-05-28 21:52
其他回答(1)
0

用反射技术!!

田麦成 | 园豆:1982 (小虾三级) | 2012-05-25 17:25

能详细点吗

支持(0) 反对(0) 拖鞋王子 | 园豆:40 (初学一级) | 2012-05-25 17:26

@拖鞋王子: 

例子:

                Type t = Type.GetType("System.IO.Stream");


                Console.WriteLine(t.BaseType);

支持(0) 反对(0) 田麦成 | 园豆:1982 (小虾三级) | 2012-05-25 17:57

@田麦成: 还有问题么??

    public class A
    {

    }

    public class B : A
    {

    }

    public class C : B
    {

    }

 

[括号里填写你要查找的类名]

Type t = typof(B);


                Console.WriteLine(t.BaseType);

 

这样就可以返回一层基类了

支持(0) 反对(0) 田麦成 | 园豆:1982 (小虾三级) | 2012-05-25 18:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册