示例#1
0
 /// <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);
             }
         }
     }
 }
示例#2
0
 /// <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);
             }
         }
     }
 }
示例#3
0
 /// <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);
 }
示例#4
0
 /// <summary>
 /// 生成名称版本键
 /// </summary>
 /// <param name="package"></param>
 /// <returns></returns>
 private string GenNameVersionKey(ExportedPackageImpl package)
 {
     return(package.Name + "_" + package.Version.ToString());
 }
示例#5
0
 /// <summary>
 /// 移除导入包对象
 /// </summary>
 /// <param name="package"></param>
 public void RemoveExportedPackage(ExportedPackageImpl package)
 {
     this.exportedPackageAdmin.RemovePackage(package);
 }
示例#6
0
 /// <summary>
 /// 添加导入包对象
 /// </summary>
 /// <param name="package"></param>
 public void AddExportedPackage(ExportedPackageImpl package)
 {
     this.exportedPackageAdmin.AddPackage(package);
 }