bool ValidateBOModel(IPersistentAssemblyInfo persistentAssemblyInfo, Type compileCore) { if (persistentAssemblyInfo.ValidateModelOnCompile) { var instance = XafTypesInfo.Instance; try { var typesInfo = new TypesInfoBuilder.TypesInfo(); typesInfo.AddEntityStore(new NonPersistentEntityStore(typesInfo)); typesInfo.AddEntityStore(new XpoTypeInfoSource(typesInfo)); typesInfo.AssignAsInstance(); typesInfo.LoadTypes(compileCore.Assembly); var applicationModulesManager = new ApplicationModulesManager(); applicationModulesManager.AddModule(compileCore); applicationModulesManager.Load(typesInfo, true); } catch (Exception exception) { persistentAssemblyInfo.CompileErrors = exception.ToString(); return(false); } finally { instance.AssignAsInstance(); } } return(true); }
private void TypesInfoValidation(string assemblyFile, TypesInfo typesInfo) { var applicationModulesManager = new ApplicationModulesManager(); var types = Assembly.LoadFile(assemblyFile).GetTypes(); applicationModulesManager.AddModule(types.First(type => typeof(ModuleBase).IsAssignableFrom(type))); applicationModulesManager.Load(typesInfo); }
ApplicationModulesManager CreateModulesManager(XafApplication application, string configFileName, string assembliesPath, ITypesInfo typesInfo) { if (!string.IsNullOrEmpty(configFileName)) { bool isWebApplicationModel = String.Compare(Path.GetFileNameWithoutExtension(configFileName), "web", StringComparison.OrdinalIgnoreCase) == 0; if (string.IsNullOrEmpty(assembliesPath)) { assembliesPath = Path.GetDirectoryName(configFileName); if (isWebApplicationModel) { assembliesPath = Path.Combine(assembliesPath + "", "Bin"); } } } ReflectionHelper.AddResolvePath(assembliesPath); try { var result = new ApplicationModulesManager(new ControllersManager(), assembliesPath); if (application != null) { foreach (ModuleBase module in application.Modules) { result.AddModule(module); } result.Security = application.Security; } if (!string.IsNullOrEmpty(configFileName)) { result.AddModuleFromAssemblies(GetModulesFromConfig(application)); } var info = typesInfo as TypesInfoBuilder.TypesInfo; if (info != null) { XpandModuleBase.Dictiorary = (info).Source.XPDictionary; } XpandModuleBase.TypesInfo = typesInfo; result.Load(typesInfo, typesInfo != XafTypesInfo.Instance); return(result); } finally { XpandModuleBase.Dictiorary = XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary; XpandModuleBase.TypesInfo = XafTypesInfo.Instance; ReflectionHelper.RemoveResolvePath(assembliesPath); } }
bool ValidateBOModel(IPersistentAssemblyInfo persistentAssemblyInfo, Type compileCore) { if (persistentAssemblyInfo.ValidateModelOnCompile) { var instance = XafTypesInfo.Instance; try{ var typesInfo = new TypesInfoBuilder.TypesInfo(); typesInfo.AddEntityStore(new NonPersistentEntityStore(typesInfo)); typesInfo.AddEntityStore(new XpoTypeInfoSource(typesInfo)); typesInfo.AssignAsInstance(); typesInfo.LoadTypes(compileCore.Assembly); var applicationModulesManager = new ApplicationModulesManager(); applicationModulesManager.AddModule(compileCore); applicationModulesManager.Load(typesInfo, true); } catch (Exception exception){ persistentAssemblyInfo.CompileErrors = exception.ToString(); return false; } finally{ instance.AssignAsInstance(); } } return true; }