我正在做一些与反射有关的操作(这将在年底更改,但在我之间找到解决方案),所以我们加载了一个目录的DLL (使用AppDomain.CurrentDomain.GetAssemblies()
),然后我们过滤它以检查它是否包含一些DLL。
过滤器基于AssemblyInfo中存在的某些特定属性,然后我们检查每个类型的程序集(assembly.GetTypes()
)并检查它是否实现了特定的接口。
如果是,我们实例化对象并对其执行方法:
if (type.GetInterface(typeof(IAssemblyInitializer).FullName) == null)
{
return ;
}
bool isCompatible = !type.IsAbstract;
if (!type.IsClass)
{
return
}
if (type.GetConstructor(new Type[0]) == null)
{
return
}
IAssemblyInitializer initializer = Activator.CreateInstance(type, new object[0]) as IAssemblyInitializer;
if (initializer != null)
{
initializer.InitializeAssembly();
}
一切似乎都有效,但是当我们已经启动了另一个应用程序时(并完成了相同的程序),执行此操作需要更长时间(例如2分钟而不是20秒)。
所以我的问题:为什么看起来我们受到了另一个应用程序已经加载了程序集的事实的影响,以及我们可以做些什么呢?
谢谢!