示例#1
0
        public static Dictionary <Type, ModuleArtifact> CreateArtifacts(this ModuleChild moduleChild, Type moduleType, ModuleArtifactType moduleArtifactType)
        {
            var artifactTypes = moduleType.Assembly.GetTypes().Where(type => !type.IsAbstract).Where(type => moduleArtifactType.IsValidArtifactType(type)).ToArray();
            var objectSpace   = moduleChild.XPObjectSpace();

            return(artifactTypes.ToList().ToDictionary(type => type, type => CreateArtifact(moduleChild, moduleArtifactType, objectSpace, type)));
        }
示例#2
0
 private static ModuleArtifact CreateArtifact(ModuleChild moduleChild, ModuleArtifactType moduleArtifactType,IObjectSpace objectSpace, Type type){
     var moduleArtifact = objectSpace.CreateObject<ModuleArtifact>();
     moduleArtifact.Name = type.Name;
     moduleArtifact.Type = moduleArtifactType;
     moduleArtifact.ModuleChilds.Add(moduleChild);
     return moduleArtifact;
 }
示例#3
0
        public static IList <ExtenderInterface> CreateExtenderInterfaces(this ModuleChild moduleChild, Type artifactType)
        {
            var modelInterfaceExtenders = GetModelInterfaceExtenders(artifactType);
            var objectSpace             = moduleChild.XPObjectSpace();
            var extenderInterfaces      = new List <ExtenderInterface>();

            foreach (var extendedInterface in modelInterfaceExtenders.GetExtendedInterfaces().Where(type => !type.Name.StartsWith("IModelModelAdaptor")))
            {
                var interfaceExtenders = modelInterfaceExtenders.GetInterfaceExtenders(extendedInterface);
                foreach (var interfaceExtender in interfaceExtenders)
                {
                    Type extender          = interfaceExtender;
                    var  extenderInterface = objectSpace.GetObject <ExtenderInterface>(node => node.Name == extender.Name);
                    if (objectSpace.IsNewObject(extenderInterface))
                    {
                        extenderInterface.Name = interfaceExtender.Name;
                        extenderInterface.ExtendedInterface = GetExtendedInterface(objectSpace, extendedInterface);
                    }
                    extenderInterface.ModuleChilds.Add(moduleChild);
                    var modelNodeAttributes = CreateModelNodeAttributes(objectSpace, interfaceExtender);
                    extenderInterface.Attributes.AddRange(modelNodeAttributes);
                    extenderInterfaces.Add(extenderInterface);
                }
            }
            return(extenderInterfaces);
        }
示例#4
0
        private static ModuleArtifact CreateArtifact(ModuleChild moduleChild, ModuleArtifactType moduleArtifactType, IObjectSpace objectSpace, Type type)
        {
            var moduleArtifact = objectSpace.CreateObject <ModuleArtifact>();

            moduleArtifact.Name = type.Name;
            moduleArtifact.Type = moduleArtifactType;
            moduleArtifact.ModuleChilds.Add(moduleChild);
            return(moduleArtifact);
        }
示例#5
0
        public static void CreateArtifacts(this ModuleChild moduleChild, Type moduleType)
        {
            moduleChild.CreateArtifacts(moduleType, ModuleArtifactType.ViewItem);
            moduleChild.CreateArtifacts(moduleType, ModuleArtifactType.ListEditor);
            moduleChild.CreateArtifacts(moduleType, ModuleArtifactType.Permission);
            var controllers = moduleChild.CreateArtifacts(moduleType, ModuleArtifactType.Controller);

            InterfaceBuilder.SkipAssemblyCleanup = true;
            foreach (var pair in controllers)
            {
                var extenderInterfaces = moduleChild.CreateExtenderInterfaces(pair.Key);
                pair.Value.Artifacts.AddRange(extenderInterfaces);
                moduleChild.CreateArtifacts(moduleType, ModuleArtifactType.Action);
            }
            InterfaceBuilder.SkipAssemblyCleanup = false;
            moduleChild.CreateArtifacts(moduleType, ModuleArtifactType.BusinessObject);
        }
示例#6
0
 private static string GroupedModuleName(ModuleChild moduleChild) {
     var groupedModuleName = Regex.Match(moduleChild.AssemblyName, "Xpand.ExpressApp.([^.]*)", RegexOptions.Singleline | RegexOptions.IgnoreCase).Groups[1].Value;
     return new[] { "", "Web", "Win" }.Contains(groupedModuleName) ? "Core" : groupedModuleName;
 }
示例#7
0
        private static string GroupedModuleName(ModuleChild moduleChild)
        {
            var groupedModuleName = Regex.Match(moduleChild.AssemblyName, "Xpand.ExpressApp.([^.]*)", RegexOptions.Singleline | RegexOptions.IgnoreCase).Groups[1].Value;

            return(new[] { "", "Web", "Win" }.Contains(groupedModuleName) ? "Core" : groupedModuleName);
        }