/// <summary>
/// 通过反射获取特性
/// </summary>
/// <param name="className"></param>
/// <returns></returns>
public string GetTableNameByClassName(string className)
{
//获取当前应用程序(解决方案)的所有程序集
Assembly[] appAssemblies = AppDomain.CurrentDomain.GetAssemblies();
//过滤出当前应用程序下的自定义的程序集(解决方案下的所有项目) 建议:自己创建的项目建议统一一个前缀,这样才能进行过滤
List<string> filterAssemblies = appAssemblies.Where(x=>x.FullName.StartsWith("你的项目前缀"))
.Select(e=>e.FullName).ToList();
for (int i = 0;i< filterAssemblies.Count;i++)
{
//加载程序集
Assembly currentAssembly = Assembly.Load(filterAssemblies[i]);
if (currentAssembly != null)
{
//通过反射动态获取类的信息
Type type = currentAssembly.GetType(filterAssemblies[i].Split(",")[0] + "." + className);
if (type == null)
{
continue;
}
//获取该类的特性值
var tableAttribute = type.GetCustomAttribute<TableAttribute>().Name;
if (tableAttribute.IsNullOrEmpty())
{
throw Oops.Oh("未找到指定类的信息");
}
return tableAttribute;
}
else
{
throw Oops.Oh("未找到目标程序集");
}
}
throw Oops.Oh("未找到指定类的信息");
}
C# 通过反射获取特性
最新推荐文章于 2024-01-18 11:29:34 发布