示例#1
0
        public object Index()
        {
            var allControllerTypes = from type in GetType().Assembly.GetTypes()
                                     where type.BaseType.FullName.Contains("ApiController")
                                     select type;

            var allPublicMethods = allControllerTypes.SelectMany(x => x.GetMethods(BindingFlags.Public | BindingFlags.Instance))
                                   .Where(x => x.CustomAttributes.Any(attr => attr.AttributeType == typeof(HttpGetAttribute)))
                                   .Where(x => x.DeclaringType != null && x.DeclaringType.Name.Contains(x.Name) == false)
                                   .Where(x => x.DeclaringType != null && !x.DeclaringType.Name.Contains("DemoStudio"))
                                   .Where(x => x.DeclaringType != null && !(x.DeclaringType.Name.Contains("Menu") && !x.Name.Contains("CreateIndexes") && !x.Name.Contains("CreateLastFmDataset") && !x.Name.Contains("DeployNorthwind") && !x.Name.Contains("CreateImdbDataset")))
                                   .Select(x => new DemoInformation
            {
                ControllerName  = x.DeclaringType.Name.Replace("Controller", string.Empty),
                DemoName        = x.Name,
                DemoDisplayName = DemoUtilities.ExtractDemoDisplayName(x),
                DemoParameters  = DemoUtilities.ExtractDemoParameters(x),
                DemoOrder       = DemoUtilities.ExtractDemoOrder(x),
                DemoOutputType  = DemoUtilities.ExtractDemoOutputType(x).ToString()
            });

            var result = allPublicMethods
                         .OrderBy(x => x.ControllerName, new ControllerNameComparer())
                         .ThenBy(x => x.DemoOrder)
                         .ThenBy(x => x.DemoDisplayName)
                         .ToList();

            var resObj = new MenuResults
            {
                Demos = result
            };

            return(resObj);
        }
示例#2
0
        public object Index()
        {
            var allControllerTypes = from type in GetType().Assembly.GetTypes()
                                     where type.BaseType.FullName.Contains("ApiController")
                                     select type;

            var allPublicMethods = allControllerTypes.SelectMany(x => x.GetMethods(BindingFlags.Public | BindingFlags.Instance))
                                                     .Where(x => x.CustomAttributes.Any(attr => attr.AttributeType == typeof(HttpGetAttribute)))
                                                     .Where(x => x.DeclaringType != null && x.DeclaringType.Name.Contains(x.Name) == false)
                                                     .Where(x => x.DeclaringType != null && !x.DeclaringType.Name.Contains("DemoStudio"))
                                                     .Where(x => x.DeclaringType != null && !(x.DeclaringType.Name.Contains("Menu") && !x.Name.Contains("CreateIndexes") && !x.Name.Contains("CreateLastFmDataset")))
                                                     .Select(x => string.Format("{0}/{1}", x.DeclaringType.Name, x.Name)); // in VS2015 :  $"{x.DeclaringType.Name}/{x.Name}"

            var result = allPublicMethods.ToList();

            result.Sort(
                delegate(string s1, string s2)
                {
                    if (s1.Contains("Basic") && s2.Contains("Advanced"))
                        return -1;
                    if (s2.Contains("Basic") && s1.Contains("Advanced"))
                        return 1;
                    return string.Compare(s1, s2, StringComparison.Ordinal);
                }
                );

            FormattedMenuIndex.FormatControllerString(result);

            var container = new CompositionContainer(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
            var indexesList = container.GetExportedValues<AbstractIndexCreationTask>().ToList();
            var multimapList = container.GetExportedValues<AbstractMultiMapIndexCreationTask>().ToList();
            var transformersList = container.GetExportedValues<AbstractTransformerCreationTask>().ToList();

            var allLists = new List<string>();
            allLists.AddRange(indexesList.Select(x => x.IndexName));
            allLists.AddRange(multimapList.Select(x => x.IndexName));
            allLists.AddRange(transformersList.Select(x => x.TransformerName));


            var resObj = new MenuResults()
            {
                ListOfControllers = result,
                ListOfIndexes = allLists
            };

            return (resObj);
        }