private static void LoadDerivedTypeInOneFolder(Type baseType, IList <Type> derivedTypeList, string folderPath, TypeLoadConfig config) { string[] files = Directory.GetFiles(folderPath); foreach (string file in files) { if (config.TargetFilePostfix != null) { if (!file.EndsWith(config.TargetFilePostfix)) { continue; } } Assembly asm = null; #region Asm try { if (config.CopyToMemory) { byte[] addinStream = FileHelper.ReadFileReturnBytes(file); asm = Assembly.Load(addinStream); } else { asm = Assembly.LoadFrom(file); } } catch (Exception ee) { ee = ee; } if (asm == null) { continue; } #endregion Type[] types = asm.GetTypes(); foreach (Type t in types) { if (t.IsSubclassOf(baseType) || baseType.IsAssignableFrom(t)) { bool canLoad = config.LoadAbstractType ? true : (!t.IsAbstract); if (canLoad) { derivedTypeList.Add(t); } } } } }
/// <summary> /// ReadFromFile 从文件读取二进制反序列化为对象。 /// </summary> public static object ReadFromFile(string filePath) { byte[] buff = FileHelper.ReadFileReturnBytes(filePath); return(SerializeHelper.DeserializeBytes(buff, 0, buff.Length)); }