/// <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; } }
public MvcControllerBuilder(string serviceName, IIocResolver iocResolver, IControllerRegister defaultControllerManager) : base(serviceName, iocResolver, defaultControllerManager) { }
public MvcControllerBuilder(string servicePrefix, string serviceName, IControllerRegister defaultControllerManager, Type apiControllerType) : base(servicePrefix, serviceName, defaultControllerManager) { this.apiControllerType = apiControllerType; }
public void InjectController(IControllerRegister action) { _action = action; }
public DefaultControllerBuilderFactory(IControllerRegister defaultControllerManager) { this.defaultControllerManager = defaultControllerManager; }