Dashing.CodeGeneration.ProxyGenerator.GenerateProxies C# (CSharp) Method

GenerateProxies() public method

public GenerateProxies ( CodeGeneratorConfig codeGeneratorConfig, IMap>.IDictionary mapDictionary ) : ProxyGeneratorResult
codeGeneratorConfig CodeGeneratorConfig
mapDictionary IMap>.IDictionary
return ProxyGeneratorResult
        public ProxyGeneratorResult GenerateProxies(
            CodeGeneratorConfig codeGeneratorConfig, 
            IDictionary<Type, IMap> mapDictionary) {
            var maps = mapDictionary.Values;
            var parallelMaps = maps.AsParallel();

            // create code doms for the proxy classes
            var trackingClasses =
                parallelMaps.Select(m => this.CreateTrackingClass(m, codeGeneratorConfig));
            var foreignKeyClasses =
                parallelMaps.Select(m => this.CreateFkClass(m, mapDictionary, codeGeneratorConfig));
            var updateClasses =
                parallelMaps.Select(
                    m => this.CreateUpdateClass(m, mapDictionary, codeGeneratorConfig));

            // extract metadata from maps
            var typeHierarchy =
                maps.Select(m => m.Type)
                    .Union(maps.SelectMany(m => m.Type.GetAncestorTypes()))
                    .ToArray();

            var namespaces =
                typeHierarchy.Select(m => m.Namespace)
                             .Distinct()
                             .Select(ns => new CodeNamespaceImport(ns));

            var references = typeHierarchy.Select(t => t.Assembly)
                                          .Distinct()
                                          .Select(a => a.Location);

            return new ProxyGeneratorResult {
                                                ProxyTypes =
                                                    trackingClasses.Concat(foreignKeyClasses)
                                                                   .Concat(updateClasses)
                                                                   .ToArray(), 
                                                NamespaceImports = namespaces.ToArray(), 
                                                ReferencedAssemblyLocations = references.ToArray()
                                            };
        }