public static XPCustomMemberInfo[] CreateMembers(WorldCreatorModule worldCreatorModule)
 {
     if (_members.Length == 0 && InterfaceBuilder.RuntimeMode)
     {
         var worldCreatorObjectSpaceProvider = WorldCreatorObjectSpaceProvider.Create(worldCreatorModule.Application, false);
         using (var objectSpace = worldCreatorObjectSpaceProvider.CreateObjectSpace()) {
             _members = CreateMembers(objectSpace);
         }
     }
     return(_members);
 }
Exemple #2
0
 private void MergeTypes(WorldCreatorObjectSpaceProvider worldCreatorObjectSpaceProvider, Func <Type, IObjectSpace> queryObjectSpace)
 {
     using (var worldCreatorObjectSpace = worldCreatorObjectSpaceProvider.CreateObjectSpace()){
         var persistentClassInfos = worldCreatorObjectSpace.QueryObjects <IPersistentClassInfo>(info => info.MergedObjectFullName != null);
         foreach (var persistentClassInfo in persistentClassInfos)
         {
             var mergeFromTypeName  = persistentClassInfo.PersistentAssemblyInfo.Name + "." + persistentClassInfo.Name;
             var mergeFromClassInfo = XafTypesInfo.Instance.FindTypeInfo(mergeFromTypeName).QueryXPClassInfo();
             if (mergeFromClassInfo != null)
             {
                 var mergeToClassInfo = XafTypesInfo.Instance.FindTypeInfo(persistentClassInfo.MergedObjectFullName).QueryXPClassInfo();
                 MergeTypes(queryObjectSpace, mergeToClassInfo, mergeFromClassInfo, persistentClassInfo);
             }
         }
         worldCreatorObjectSpace.CommitChanges();
     }
 }
Exemple #3
0
        void AddPersistentModules(ApplicationModulesManager applicationModulesManager)
        {
            WorldCreatorApplication.CheckCompatibility(Application, GetWorldCreatorApplication);

            if (!string.IsNullOrEmpty(ConnectionString) || Application.ObjectSpaceProviders.OfType <DataServerObjectSpaceProvider>().Any())
            {
                lock (_locker){
                    var worldCreatorObjectSpaceProvider = WorldCreatorObjectSpaceProvider.Create(Application, false);
                    using (var objectSpace = worldCreatorObjectSpaceProvider.CreateObjectSpace()){
                        var codeValidator =
                            new CodeValidator(new Compiler(AssemblyPathProvider.Instance.GetPath(Application)),
                                              new AssemblyValidator());
                        var assemblyManager = new AssemblyManager(objectSpace, codeValidator);
                        foreach (var assembly in assemblyManager.LoadAssemblies())
                        {
                            var moduleType = assembly.GetTypes()
                                             .First(type => typeof(ModuleBase).IsAssignableFrom(type));
                            applicationModulesManager.AddModule(Application, (ModuleBase)moduleType.CreateInstance());
                        }

                        worldCreatorObjectSpaceProvider.MakeThreadSafe();
                    }
                    worldCreatorObjectSpaceProvider.SchemaUpdateMode = SchemaUpdateMode.None;
                }
            }
            else
            {
                var assemblies =
                    AppDomain.CurrentDomain.GetAssemblies()
                    .Where(assembly => assembly.ManifestModule.ScopeName.EndsWith(Compiler.XpandExtension));
                foreach (var assembly1 in assemblies)
                {
                    applicationModulesManager.AddModule(assembly1.GetTypes()
                                                        .First(type => typeof(ModuleBase).IsAssignableFrom(type)));
                }
            }

            XpoObjectMerger.MergeTypes(this);
        }