public RuntimeScaffoldingHttpControllerSelector(
            HttpConfiguration configuration,
            RuntimeScaffoldingApproach runtimeScaffoldingApproach = RuntimeScaffoldingApproach.Allow,
            params Assembly[] assemblies)
            : base(configuration)
        {
            _configuration = configuration;

            if (!assemblies.Any())
            {
                throw new ArgumentException("Empty collection of assemblies given", nameof(assemblies));
            }

            var types = new List<Type>();
            foreach (var a in assemblies)
            {
                types.AddRange(
                    a.DefinedTypes
                    .Where(x => x.IsClass && !x.IsAbstract && typeof(IEntityBase<>).IsAssignableFrom(x) &&
                        ((runtimeScaffoldingApproach == RuntimeScaffoldingApproach.Allow && x.IsDefined(typeof(AllowScaffoldAttribute)))
                        || (runtimeScaffoldingApproach == RuntimeScaffoldingApproach.Deny && !x.IsDefined(typeof(DenyScaffoldAttribute))))
                    ));
            }

            _typesDictionary = new Dictionary<string, Type>();
            foreach (var x in types)
            {
                _typesDictionary[x.Name.ToLowerInvariant()] = x;
            }
        }
Exemple #2
0
        public RuntimeScaffoldingHttpControllerSelector(
            HttpConfiguration configuration,
            RuntimeScaffoldingApproach runtimeScaffoldingApproach = RuntimeScaffoldingApproach.Allow,
            params Assembly[] assemblies)
            : base(configuration)
        {
            _configuration = configuration;

            if (!assemblies.Any())
            {
                throw new ArgumentException("Empty collection of assemblies given", nameof(assemblies));
            }

            var types = new List <Type>();

            foreach (var a in assemblies)
            {
                types.AddRange(
                    a.DefinedTypes
                    .Where(x => x.IsClass && !x.IsAbstract && typeof(IEntityBase <>).IsAssignableFrom(x) &&
                           ((runtimeScaffoldingApproach == RuntimeScaffoldingApproach.Allow && x.IsDefined(typeof(AllowScaffoldAttribute))) ||
                            (runtimeScaffoldingApproach == RuntimeScaffoldingApproach.Deny && !x.IsDefined(typeof(DenyScaffoldAttribute))))
                           ));
            }

            _typesDictionary = new Dictionary <string, Type>();
            foreach (var x in types)
            {
                _typesDictionary[x.Name.ToLowerInvariant()] = x;
            }
        }