【发布时间】:2011-12-05 06:55:45
【问题描述】:
遍历 *.dll 文件的目录,找到它们并为每个文件创建一个程序集引用。
一旦我有了一个反射对象,我就会遍历每个对象中可用的所有类型,我想从中获取集合中每个类型的自定义属性:
string[] files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "Methods", "*.dll");
foreach (string s in files)
{
Assembly asm = Assembly.LoadFile(s);
Type[] asmTypes = asm.GetTypes();
bool isCorrect = false;
foreach (Type type in asmTypes)
{
1. var customAttribs = type.GetCustomAttributes(typeof(BaseModelAttribute), false);
}
}
[更新]:第 1 行引发异常
当我得到一个异常说找不到文件时,这段代码一直工作到 foreach...循环,这很奇怪,因为我从代码块中较高的文件创建了一个程序集引用(代码中没有提到)。
[更新]:Erno 认为无法建立引用是正确的。 Base,出于某种原因,需要在参考池之外定义(在 bin 目录中),即使应用程序实际上并不需要它。对我来说没有意义,但它有效。谢谢。
【问题讨论】:
-
请包含所有相关代码。
-
你可能想打电话给
GetExportedTypes()。
标签: c# reflection