/// <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); }
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); }
/// <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); }
private static Assembly getInfAssembly(ServicePackageInfo info) { return(AssemblyHelper.LoadAssembly(info.InfAssemblyName)); }