private static IEnumerable <Assembly> GetReferencedAssemblies(IAssemblyFinder finder, Type type) { MicroStrutLibraryExceptionHelper.IsNull(finder, typeof(ReflectionHelper).FullName, LogLevel.Error, "类型查找器为空!"); MicroStrutLibraryExceptionHelper.IsNull(type, typeof(ReflectionHelper).FullName, LogLevel.Error, "类型为空!"); Assembly typeAssembly = type.GetTypeInfo().Assembly; return(finder.GetAssemblies().Where(assembly => { if (assembly.IsDynamic) { return false; } if (assembly.FullName == typeAssembly.FullName) { return true; } return assembly.GetReferencedAssemblies().Any(assemblyName => { return assemblyName.FullName == typeAssembly.FullName; }); })); }
/// <summary> /// Gets tne assemblies related to the current implementation. /// </summary> /// <returns>A list of assemblies that should be loaded.</returns> /// <remarks></remarks> public virtual IList <Assembly> GetAssemblies() { return(_assemblyFinder.GetAssemblies()); }