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

            var dataFromEvents = dataFromComponents
                                 .Where(data => data.IsEvent())
                                 .SelectMany(createDataForEvents)
                                 .ToArray();

            return(merge(dataFromEvents, merge(dataFromNonComponents, dataFromComponents)));
        }
Esempio n. 2
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);

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

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

            return(dataFromComponents
                   .Where(data => !generatedComponentsLookup.Contains(data.GetTypeName()))
                   .Concat(dataFromNonComponents)
                   .ToArray());
        }
        public CodeGeneratorData[] GetData()
        {
            var types = _types ?? PluginUtil
                        .GetCachedAssemblyResolver(objectCache, _assembliesConfig.assemblies, _codeGeneratorConfig.searchPaths)
                        .GetTypes();

            var dataFromMessages = types
                                   .Where(type => type.ImplementsInterface <IMessage>())
                                   .Where(type => !type.IsAbstract)
                                   .Select(createDataForMessage)
                                   .ToArray();

            // var dataFromNonMessages = types
            //     .Where(type => !type.ImplementsInterface<IMessage>())
            //     .Where(type => !type.IsGenericType)
            //     .Where(hasContexts)
            //     .SelectMany(createDataForNonMessage)
            //     .ToArray();
            //
            // var mergedData = merge(dataFromNonMessages, dataFromMessages);
            //
            // var dataFromEvents = mergedData
            //     .Where(data => data.IsEvent())
            //     .SelectMany(createDataForEvents)
            //     .ToArray();

            //MessageData[] result = merge(dataFromEvents, mergedData);
            return(dataFromMessages);
        }
Esempio n. 4
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());
        }