/// <summary> /// 获取未被加载过的包装类 /// </summary> /// <param name="types"></param> /// <returns></returns> protected virtual IEnumerable <IExtensionWrapper> GetNewWrappersFrom(IEnumerable <Type> types) { List <IExtensionWrapper> newWrappers = new List <IExtensionWrapper>(); foreach (var type in types) { try { var tmp = GetWrapperFor(type); if (tmp.Check()) { tmp.Ready(); newWrappers.Add(tmp); } else { SLogger.Debug($"{ManagedAssembly.GetName().Name} 's librarian", "Check result is false"); tmp.Destory(); } } catch (WrapperAlreadyCreatedOnceException) { SLogger.Debug($"{ManagedAssembly.GetName().Name} 's librarian", $"{type.Name}'s wrappers was created once,skip it"); } catch (Exception ex) { SLogger.Debug($"{ManagedAssembly.GetName().Name} 's librarian", $"an exception threw on create wappers for {type.Name}", ex); } } return(newWrappers); }
/// <summary> /// 重载内部信息 /// </summary> public virtual void Reload() { if (ManagedAssembly == null) { throw new NullReferenceException("ManagedAssembly must be setted"); } Extensions = from type in ManagedAssembly.GetTypes() where IsExt(type) select CreateExtensionInfo(type); }
public virtual void RefreshExtensions() { //Emtpy exist extensions record if (Extensions != null) { foreach (var ext in Extensions) { var rext = new RegisteredExtensionInfo(ext, this); LakeProvider.Lake.Get <ILibsManager>().Registry.Remove(rext); } } //Rescan and load Extensions = from type in ManagedAssembly.GetTypes() where IsExt(type) select CreateExtensionInfo(type); foreach (var ext in Extensions) { var rext = new RegisteredExtensionInfo(ext, this); LakeProvider.Lake.Get <ILibsManager>().Registry.Add(rext); } }
/// <summary> /// 获取符合条件的拓展模块类型 /// </summary> /// <returns></returns> protected virtual IEnumerable <Type> GetExtTypes() { return(from type in ManagedAssembly.GetTypes() where IsExt(type) select type); }