程序集中获取指定基类的所有子类的名称
描述
该功能一般用于框架的搭建
示例代码
/// <summary>
/// 程序集中获取指定基类的所有子类的名称。
/// </summary>
/// <param name="varAssemblyName">程序集名称。</param>
/// <param name="baseType">基类类型。</param>
/// <returns>指定基类的所有子类的名称。</returns>
public string[] GetClassByAssembly(string[] varAssemblyName,Type baseType)
{
List<string> tempList = new List<string>();
for(int i = 0; i < varAssemblyName.Length; i++)
{
Assembly tempAssembly = null;
try
{
//获取程序集
tempAssembly = System.Reflection.Assembly.Load(varAssemblyName[i])
}
catch
{
continue;
}
if(tempAssembly == null)
{
continue;
}
//获取程序集中的所有类型
System.Type[] types = tempAssembly.GetTypes();
foreach(var item in types)
{
//获取所有非抽象类的class类型
if(item.IsClass && !item.IsAbstract)
{
//获取指定类和继承了指定类的相关类
if(baseType.IsAssignableFrom(item))
{
tempList.Add(item.FullName);
}
}
}
}
tempList.Sort();
return tempList.ToArray();
}
版权声明:本文为weixin_41005274原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。