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