DLL帮助类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/// <summary>
/// DLL帮助类
/// </summary>
namespace COMMON
{
public class DllHelper
{
/// <summary>
/// C#获取一个类在其所在的程序集中的所有子类
/// </summary>
/// <param name="parentType">给定的类型</param>
/// <returns>所有子类</returns>
public static List<Type> GetSubClassNames(Type parentType)
{
var subTypeList = new List<Type>();
var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToList();//获取当前父类所在的程序集``
assemblys.ForEach(assembly =>
{
var assemblyAllTypes = assembly.GetTypes();//获取该程序集中的所有类型
foreach (var itemType in assemblyAllTypes)//遍历所有类型进行查找
{
var baseType = itemType.BaseType;//获取元素类型的基类
if (baseType != null)//如果有基类
{
if (baseType.Name == parentType.Name)//如果基类就是给定的父类
{
subTypeList.Add(itemType);//加入子类表中
}
else if (baseType.Name != "Object" && baseType.BaseType.Name == parentType.Name)
{
subTypeList.Add(itemType);
}
}
}
});
return subTypeList.ToList();//获取所有子类类型的名称
}
/// <summary>
/// C#获取一个类在其所在的程序集中的所有子接口
/// </summary>
/// <param name="parentType">给定的类型</param>
/// <returns>所有子类</returns>
public static List<Type> GetSubInterfaceNames(Type parentType)
{
var subTypeList = new List<Type>();
var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToList();//获取当前父类所在的程序集``
assemblys.ForEach(assembly =>
{
var assemblyAllTypes = assembly.GetTypes();//获取该程序集中的所有类型
subTypeList.AddRange(assemblyAllTypes.Where(i => parentType.IsAssignableFrom(i) && i != parentType && !i.IsClass));
});
return subTypeList;//返回所有继承parentType的接口类
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界