コード例 #1
0
        public CodeGeneratorData[] GetData()
        {
            if (_types == null)
            {
                _types = CodeGeneratorUtil.LoadTypesFromAssemblies();
            }

            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)))
                                  .Select(kv => createEntityIndexData(kv.Key, kv.Value));

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

            return(entityIndexData
                   .Concat(customEntityIndexData)
                   .ToArray());
        }
コード例 #2
0
        public CodeGeneratorData[] GetData()
        {
            if (_types == null)
            {
                _types = CodeGeneratorUtil.LoadTypesFromAssemblies();
            }

            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());
        }
コード例 #3
0
 static void scanDlls()
 {
     if (File.Exists(Preferences.configPath))
     {
         printTypes(CodeGeneratorUtil.LoadTypesFromCodeGeneratorAssemblies());
         printTypes(CodeGeneratorUtil.LoadTypesFromAssemblies());
     }
     else
     {
         printNoConfig();
     }
 }