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