Exemple #1
0
        public CodeGeneratorData[] GetData()
        {
            var types = _types ?? PluginUtil
                        .GetCachedAssemblyResolver(objectCache, _assembliesConfig.assemblies, _codeGeneratorConfig.searchPaths)
                        .GetTypes();

            var dataFromComponents = types
                                     .Where(type => type.ImplementsInterface <IComponent>())
                                     .Where(type => !type.IsAbstract)
                                     .Select(createDataForComponent)
                                     .ToArray();

            var dataFromNonComponents = types
                                        .Where(type => !type.ImplementsInterface <IComponent>())
                                        .Where(type => !type.IsGenericType)
                                        .Where(hasContexts)
                                        .SelectMany(createDataForNonComponent)
                                        .ToArray();

            return(merge(dataFromNonComponents, dataFromComponents));
        }
Exemple #2
0
        public CodeGeneratorData[] GetData()
        {
            var types = _types ?? PluginUtil
                        .GetCachedAssemblyResolver(objectCache, _assembliesConfig.assemblies, _codeGeneratorConfig.searchPaths)
                        .GetTypes();

            var entityIndexData = types
                                  .Where(type => !type.IsAbstract)
                                  .Where(type => type.ImplementsInterface <IComponent>())
                                  .ToDictionary(
                type => type,
                type => type.GetPublicMemberInfos())
                                  .Where(kv => kv.Value.Any(info => info.attributes.Any(attr => attr.attribute is AbstractEntityIndexAttribute)))
                                  .SelectMany(kv => createEntityIndexData(kv.Key, kv.Value));

            var customEntityIndexData = types
                                        .Where(type => !type.IsAbstract)
                                        .Where(type => Attribute.IsDefined(type, typeof(CustomEntityIndexAttribute)))
                                        .Select(createCustomEntityIndexData);

            return(entityIndexData
                   .Concat(customEntityIndexData)
                   .ToArray());
        }
Exemple #3
0
        public CodeGeneratorData[] GetData()
        {
            var types = _types ?? PluginUtil
                        .GetCachedAssemblyResolver(objectCache, _assembliesConfig.assemblies, _codeGeneratorConfig.searchPaths)
                        .GetTypes();

            var dataFromComponents = types
                                     .Where(type => type.ImplementsInterface <IComponent>())
                                     .Where(type => !type.IsAbstract)
                                     .Select(type => createDataForComponent(type));

            var dataFromNonComponents = types
                                        .Where(type => !type.ImplementsInterface <IComponent>())
                                        .Where(type => !type.IsGenericType)
                                        .Where(type => hasContexts(type))
                                        .SelectMany(type => createDataForNonComponent(type));

            var generatedComponentsLookup = dataFromNonComponents.ToLookup(data => data.GetFullTypeName());

            return(dataFromComponents
                   .Where(data => !generatedComponentsLookup.Contains(data.GetFullTypeName()))
                   .Concat(dataFromNonComponents)
                   .ToArray());
        }