/// <summary> /// 移除导入包对象 /// </summary> /// <param name="package"></param> public void RemovePackage(ExportedPackageImpl package) { if (package != null) { lock (lockObj) { // 从声明序列存放的列表中移除 if (!packageByDeclarationOrder.Contains(package)) { packageByDeclarationOrder.Remove(package); } // 从按名称存放的列表中移除 if (!packagesByName.Contains(package.Name)) { IList packages = packagesByName[package.Name] as IList; if (packages.Contains(package)) { packages.Remove(package); } } // 按包程序集全名存放的列表中移除 if (!packagesByAssembly.Contains(package.AssemblyName.FullName)) { packagesByAssembly.Remove(package.AssemblyName.FullName); } } } }
/// <summary> /// 添加导入包对象 /// </summary> /// <param name="package"></param> public void AddPackage(ExportedPackageImpl package) { if (package != null) { lock (lockObj) { // 按声明序列存放到列表中 if (!packageByDeclarationOrder.Contains(package)) { packageByDeclarationOrder.Add(package); } // 按名称存放到列表中 if (packagesByName.Contains(package.Name)) { IList packages = packagesByName[package.Name] as IList; if (!packages.Contains(package)) { packages.Add(package); } } else { IList packages = new ArrayList(); packages.Add(package); packagesByName.Add(package.Name, packages); } // 按包程序集全名存放到列表中 string key = GenNameVersionKey(package); if (!packagesByAssembly.Contains(package.AssemblyName.FullName)) { packagesByAssembly.Add(package.AssemblyName.FullName, package); } } } }
/// <summary> /// 创建导出包 /// </summary> /// <param name="bundle"></param> /// <param name="asemblyEntry"></param> /// <returns></returns> internal static ExportedPackageImpl Create(AbstractBundle bundle, AssemblyEntry asemblyEntry) { try { var package = new ExportedPackageImpl(bundle, asemblyEntry); package.Initialize(); return(package); } catch (Exception ex) { Log.Debug(ex); } return(null); }
/// <summary> /// 生成名称版本键 /// </summary> /// <param name="package"></param> /// <returns></returns> private string GenNameVersionKey(ExportedPackageImpl package) { return(package.Name + "_" + package.Version.ToString()); }
/// <summary> /// 移除导入包对象 /// </summary> /// <param name="package"></param> public void RemoveExportedPackage(ExportedPackageImpl package) { this.exportedPackageAdmin.RemovePackage(package); }
/// <summary> /// 添加导入包对象 /// </summary> /// <param name="package"></param> public void AddExportedPackage(ExportedPackageImpl package) { this.exportedPackageAdmin.AddPackage(package); }