Tag: assembly.reflectiononly

C#Assembly.Load与Assembly.ReflectionOnlyLoad

我想了解Assembly.Load和Assembly.ReflectionOnlyLoad之间的区别。 在下面的代码中,我试图从一个给定的接口inheritance给定的程序集中的所有对象: var myTypes = new List<Type>(); var assembly = Assembly.Load("MyProject.Components"); foreach (var type in assembly.GetTypes()) { if (type.GetInterfaces().Contains(typeof(ISuperInterface))) { myTypes.Add(type); } } 这段代码对我来说工作正常,但是我正在对其他可能更好的替代方法进行一些研究,并且遇到了Assembly.ReflectionOnlyLoad()方法。 我认为,因为我没有加载或执行任何对象,基本上只是查询他们的定义,我可以使用ReflectionOnlyLoad稍微提高性能… 但事实certificate,当我将Assembly.Load更改为Assembly.ReflectionOnlyLoad时,它调用assembly.GetTypes()时出现以下错误: System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的types。 检索LoaderExceptions属性以获取更多信息。 我认为上面的代码只是做reflection和“看”图书馆……但是这是海森堡不确定性原理的某种实例,看图书馆和其中的对象实际上是试图实例化它们在一些办法? 谢谢,马克斯