예제 #1
0
        /// <summary>
        /// Creates a new instance of ApiControllerInfoBuilder.
        /// </summary>
        /// <param name="serviceName">Name of the controller</param>
        /// <param name="iocResolver">Ioc resolver</param>
        public DefaultControllerBuilder(string serviceName, IIocResolver iocResolver, IControllerRegister defaultControllerManager)
        {
            Check.NotNull(iocResolver, nameof(iocResolver));

            if (string.IsNullOrWhiteSpace(serviceName))
            {
                throw new ArgumentException("serviceName null or empty!", "serviceName");
            }

            if (!DynamicApiServiceNameHelper.IsValidServiceName(serviceName))
            {
                throw new ArgumentException("serviceName is not properly formatted! It must contain a single-depth namespace at least! For example: 'myapplication/myservice'.", "serviceName");
            }

            _iocResolver = iocResolver;
            _defaultControllerManager = defaultControllerManager;

            ServiceName          = serviceName;
            ServiceInterfaceType = typeof(T);

            _actionBuilders = new Dictionary <string, TControllerActionBuilder>();
            var methodInfos = DynamicApiControllerActionHelper.GetMethodsOfType(typeof(T))
                              .Where(methodInfo => methodInfo.GetSingleAttributeOrNull <BlocksActionNameAttribute>() != null);

            foreach (var methodInfo in methodInfos)
            {
                var actionBuilder     = (TControllerActionBuilder)typeof(TControllerActionBuilder).New(this, methodInfo, iocResolver);
                var remoteServiceAttr = methodInfo.GetSingleAttributeOrNull <RemoteServiceAttribute>();
                if (remoteServiceAttr != null && !remoteServiceAttr.IsEnabledFor(methodInfo))
                {
                    actionBuilder.DontCreateAction();
                }
                var actionNameAttr = methodInfo.GetSingleAttributeOrNull <BlocksActionNameAttribute>();


                _actionBuilders[actionNameAttr.ActionName] =
                    actionBuilder;
            }
        }
예제 #2
0
 public MvcControllerBuilder(string serviceName, IIocResolver iocResolver, IControllerRegister defaultControllerManager) : base(serviceName, iocResolver, defaultControllerManager)
 {
 }
예제 #3
0
 public MvcControllerBuilder(string servicePrefix, string serviceName, IControllerRegister defaultControllerManager, Type apiControllerType) : base(servicePrefix, serviceName, defaultControllerManager)
 {
     this.apiControllerType = apiControllerType;
 }
예제 #4
0
 public void InjectController(IControllerRegister action)
 {
     _action = action;
 }
 public DefaultControllerBuilderFactory(IControllerRegister defaultControllerManager)
 {
     this.defaultControllerManager = defaultControllerManager;
 }