我想指向DLL的目录并读取其中的类的属性。大多数类都有一个自定义属性,其中包含我想要阅读的各种属性。
我有一些使用Assembly.GetCustomAttributes
的旧代码这仍然被认为是最好的方法吗?
答案 0 :(得分:2)
Assembly.GetCustomAttributes
获取程序集的属性 - 这是assemblie的元数据。这通常放在AssemblyInfo.cs
中,而它们可以放在任何地方。
不应与class
自定义属性 - 或属性/方法/字段/等混淆。
如果您的意思是要通过具有标识此类感兴趣的程序集的自定义属性来过滤掉要查找的程序集,那么这是一种有效的方法。但是,请记住,要读取这些属性,首先需要将程序集加载到内存中。
答案 1 :(得分:1)
反射是读取自定义属性的唯一方法。一些伪自定义属性反映在System.Type类的属性上。无法从appdomain卸载“正常”加载的程序集,因此理想情况下,您希望将程序集加载到仅反射上下文中(有方法System.Reflection.Assembly.ReflectionOnlyLoad和ReflectionOnlyLoadFrom),以便在您有所需时可以卸载它们信息。