程序集中获取指定基类的所有子类的名称

程序集中获取指定基类的所有子类的名称

描述

该功能一般用于框架的搭建

示例代码


/// <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版权协议,转载请附上原文出处链接和本声明。