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))); }
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); }