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