有没有办法在使用c#扫描所有程序集时识别我的自定义程序集?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法在使用c#扫描所有程序集时识别我的自定义程序集?相关的知识,希望对你有一定的参考价值。
我有一个包含多个项目的应用程序。当然,每个项目都会创建自己的dll。然后我们可以使用AppDomain.CurrentDomain.GetAssemblies().ToList()
来使所有程序集使用反射,原因有很多。
AppDomain.CurrentDomain.GetAssemblies()
将扫描存在的每个程序集,包括像我们使用其他依赖管理工具的Nuget所提取的标准数据或者软件包。如果我只想扫描我的项目而不是其他项目怎么办?
有没有办法让我的项目成为共享类型,然后寻找共享类型?不幸的是,我的项目没有一个通用的名称模式来扫描名称,以便在这里开始或结束。
答案
您可以使用内置程序集属性之一,例如CompanyName
。将此属性添加到程序集中(或编辑,通常它已添加到AssemblyInfo.cs
文件中):
[assembly: AssemblyCompany("My company")]
然后检查公司名称是否匹配:
static bool IsMyAssembly(Assembly asm) {
var company = asm.GetCustomAttribute<AssemblyCompanyAttribute>();
return company != null && company.Company == "My company";
}
另一答案
您可以使用以下方法过滤GAC程序集:
AppDomain.CurrentDomain.GetAssemblies().Where(a => !a.GlobalAssemblyCache)
您可以为每个程序集添加自定义属性并进行查询:
AppDomain.CurrentDomain.GetAssemblies()
.Select(a => a.GetCustomAttribute<MyAttribute>()).Where(attr => attr != null && attr.CustomProp == "MyValue")
以上是关于有没有办法在使用c#扫描所有程序集时识别我的自定义程序集?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法从 Sentry 捕获日志并将它们发布到我的自定义后端?
我的 Joomla 模板正在使用 JS 加载我的自定义 CSS。有没有办法将唯一版本标签添加到我的自定义 CSS 中?即:custom.css?20180101