C#获取所有继承接口的子类

先建一个类

然后随便写一个方法

void Start () 
    {
       var types = Assembly.GetCallingAssembly().GetTypes();
        var aType = typeof(A);
        Debug.Log(aType.FullName);
        List<A> ass = new List<A>();
        var typess = Assembly.GetCallingAssembly().GetTypes();  //获取所有类型
        foreach (var t in typess)
        {
                Type[] tfs = t.GetInterfaces();  //获取该类型的接口
                foreach (var tf in tfs)
                {
                    if (tf.FullName == aType.FullName)  //判断全名,是否在一个命名空间下面
                    {
                        A a = Activator.CreateInstance(t) as A;
                        ass.Add(a);
                    }
                }
        }
        Debug.Log(ass.Count);
        foreach (var item in ass)
        {
            item.a();  //调用所有继承该接口的类中的方法
        }

    }

 

然后在随便建几个类

namespace Dd
{
    interface A
    {
        void a();
    }
}


public class B : A
{

    public void a()
    {
        Debug.Log("B....");
    }
}


public class C: A
{

    public void a()
    {
        Debug.Log("C.....");
    }
}


public class D : A
{

    public void a()
    {
        Debug.Log("D.......");
    }
}

 

posted @ 2017-08-17 11:24  狂奔的老鳖  阅读(3447)  评论(0编辑  收藏  举报