Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 添加导入包对象
 /// </summary>
 /// <returns></returns>
 public void AddImportPackage(IImportPackage package)
 {
     lock (importingPackages)
     {
         if (!this.importingPackages.Contains(package))
         {
             this.importingPackages.Add(package);
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 移除导入包对象
 /// </summary>
 /// <returns></returns>
 public void RemoveImportPackage(IImportPackage package)
 {
     lock (importingPackages)
     {
         if (this.importingPackages.Contains(package))
         {
             this.importingPackages.Remove(package);
         }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 根据导入包获取导出包
 /// </summary>
 /// <param name="name"></param>
 /// <param name="version"></param>
 /// <returns></returns>
 public IExportedPackage[] GetExportedPackages(IImportPackage importPackage)
 {
     return(this.exportedPackageAdmin.GetExportedPackages(importPackage));
 }