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.......");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM