/// <summary> /// 根据导入包获取导出包 /// </summary> /// <param name="name"></param> /// <param name="version"></param> /// <returns></returns> public IExportedPackage[] GetExportedPackages(IImportPackage importPackage) { // 如果当前是宿主插件,要求导入包指定的插件为当前插件 if (!this.bundle.IsFragment && !importPackage.Bundle.Equals(this.bundle)) { return(null); } else { // 所属插件是片段插件,要求其宿主必须是倒入包所依赖插件对象 BundleHost[] hosts = this.bundle.Hosts; if (hosts == null || !hosts.Contains(importPackage.Bundle)) { return(null); } } // 获取导出包 if (importPackage.Version == null) { return(bundle.BundleSpecification.GetExportedPackage(importPackage.Name)); } else if (!string.IsNullOrEmpty(importPackage.Culture) && !string.IsNullOrEmpty(importPackage.PublicKeyToken)) { return(new IExportedPackage[] { bundle .BundleSpecification .GetExportedPackage(importPackage.Name, importPackage.Version, importPackage.Culture, importPackage.PublicKeyToken) }); } return(null); }
/// <summary> /// 添加导入包对象 /// </summary> /// <returns></returns> public void AddImportPackage(IImportPackage package) { lock (importingPackages) { if (!this.importingPackages.Contains(package)) { this.importingPackages.Add(package); } } }
/// <summary> /// 移除导入包对象 /// </summary> /// <returns></returns> public void RemoveImportPackage(IImportPackage package) { lock (importingPackages) { if (this.importingPackages.Contains(package)) { this.importingPackages.Remove(package); } } }
/// <summary> /// 根据导入包获取导出包 /// </summary> /// <param name="name"></param> /// <param name="version"></param> /// <returns></returns> public IExportedPackage[] GetExportedPackages(IImportPackage importPackage) { return(this.exportedPackageAdmin.GetExportedPackages(importPackage)); }