コード例 #1
0
        /// <inheritdoc />
        public void ExecuteConfiguration(IApplicationConfigurationService service)
        {
            if (OnlyAttributedFlag)
            {
                MethodFilterGroup.Add(m => m.GetCustomAttributes().Any(a => a is IPathAttribute));
                WhereFilters.Add(type => type.GetMembers(BindingFlags.Public | BindingFlags.Instance).Any(member => member.GetCustomAttributes().Any(attr => attr is IPathAttribute)));
            }

            foreach (var type in Types)
            {
                if (!WhereFilters.Execute(type))
                {
                    continue;
                }

                var activationMethod = _activateMethod(type);

                var authorizationList = AuthorizeFuncs.SelectMany(func => func(type)).ToList();

                if (AsFuncs != ImmutableLinkedList <Func <Type, IEnumerable <string> > > .Empty)
                {
                    foreach (var asFunc in AsFuncs)
                    {
                        foreach (var nameString in asFunc(type))
                        {
                            service.ExposeType(_currentApiInformation, type, activationMethod,
                                               null, nameString, authorizationList,
                                               MethodFilterGroup, null);
                        }
                    }
                }
                else
                {
                    service.ExposeType(_currentApiInformation, type, activationMethod,
                                       null, "", authorizationList,
                                       MethodFilterGroup, null);
                }
            }
        }