static string[] initPhase<T>(out string[] availableTypes, out string[] availableNames) where T : ICodeGeneratorInterface {
            var instances = UnityCodeGenerator
                .GetTypes<T>()
                .Where(type => !type.IsAbstract)
                .Select(type => (T)Activator.CreateInstance(type));

            if(typeof(T) == typeof(ICodeGenFilePostProcessor)) {
                instances = instances
                    .OrderBy(instance => ((ICodeGenFilePostProcessor)instance).priority);
            } else {
                instances = instances
                    .OrderBy(instance => instance.name);
            }

            availableTypes = instances
                .Select(instance => instance.GetType().FullName)
                .ToArray();

            availableNames = instances
                .Select(instance => instance.name)
                .ToArray();

            return instances
                .Where(instance => instance.isEnabledByDefault)
                .Select(instance => instance.GetType().FullName)
                .ToArray();
        }
Esempio n. 2
0
        static string[] initPhase <T>(out string[] availableTypes, out string[] availableNames) where T : ICodeGeneratorInterface
        {
            var instances = UnityCodeGenerator
                            .GetTypes <T>()
                            .Where(type => !type.IsAbstract)
                            .Select(type => (T)Activator.CreateInstance(type))
                            .OrderBy(instance => instance.name);

            availableTypes = instances
                             .Select(instance => instance.GetType().Name)
                             .ToArray();

            availableNames = instances
                             .Select(instance => instance.name)
                             .ToArray();

            return(instances
                   .Where(instance => instance.isEnabledByDefault)
                   .Select(instance => instance.GetType().Name)
                   .ToArray());
        }