Exemple #1
0
        /// <summary>
        /// 转换业务服务包
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static IServicePackage Convert2Package(ServicePackageInfo info)
        {
            ServicePackage package       = new ServicePackage();
            Assembly       impleAssembly = getImpleAssembly(info);
            Assembly       infAssembly   = getInfAssembly(info);

            if (impleAssembly == null || infAssembly == null)
            {
                return(null);
            }

            foreach (ServiceInfo service in info.Services)
            {
                Type servicetype = infAssembly.GetType(service.ServiceTypeName);
                if (servicetype != null)
                {
                    Type t = Type.GetType(servicetype.AssemblyQualifiedName);
                    if (t != null)
                    {
                        servicetype = t;
                    }
                }
                Type impletype = impleAssembly.GetType(service.ImpleTypeName);
                if (servicetype != null && impletype != null)
                {
                    ServiceDesc desc = new ServiceDesc(servicetype, service.Key, impletype, service.IsDefault);
                    package.AddService(desc);
                    if (service.IsDefault)
                    {
                        package.SetDefaultService(new ServiceKey(desc));
                    }
                }
            }
            return(package);
        }
Exemple #2
0
        private static Assembly getImpleAssembly(ServicePackageInfo info)
        {
            string[] strs  = info.ImpleAssemblyName.Split('\\');
            string   names = (strs[strs.Length - 1]);

            string[] arrname = (names.Split('.'));
            int      i       = 1;
            string   name    = arrname[0];

            while (i < arrname.Length - 1)
            {
                name += "." + arrname[i];
                i++;
            }

            Assembly impleAssembly;

            try
            {
                impleAssembly = AppDomain.CurrentDomain.Load(name);
            }
            catch
            {
                impleAssembly = CheckConfig.GetAssembly(ConfigUtil.GetBizPluginFullPath(info.ImpleAssemblyName));
            }

            return(impleAssembly);
        }
Exemple #3
0
        /// <summary>
        /// 获取服务包列表
        /// </summary>
        /// <param name="rootelem"></param>
        /// <returns></returns>
        public static List <ServicePackageInfo> GetPackageList(XmlElement rootelem)
        {
            List <ServicePackageInfo> packages = new List <ServicePackageInfo>();

            foreach (XmlNode childnode in rootelem.ChildNodes)
            {
                if (childnode is XmlElement && childnode.Name == "ServicePackage")
                {
                    ServicePackageInfo info = PackageInfoLoader.GetPackageInfo(childnode as XmlElement);
                    if (info != null)
                    {
                        packages.Add(info);
                    }
                }
            }
            return(packages);
        }
Exemple #4
0
 private static Assembly getInfAssembly(ServicePackageInfo info)
 {
     return(AssemblyHelper.LoadAssembly(info.InfAssemblyName));
 }