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