private static HttpResponse InvokeAction(HttpRequest request, IserviceCollection serviceCollection, Type controllerType, MethodInfo actionMethod) { var controller = serviceCollection.CreateInstance(controllerType) as Controller; controller.Request = request; var actionParameterValues = new List <object>(); var actionParameters = actionMethod.GetParameters(); foreach (var parameter in actionParameters) { var value = Convert.ChangeType(GetValueFromRequest(request, parameter.Name), parameter.ParameterType); if (value == null && parameter.ParameterType != typeof(string)) { var parameterValue = Activator.CreateInstance(parameter.ParameterType); foreach (var property in parameter.ParameterType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var propertyValue = GetValueFromRequest(request, property.Name); property.SetValue(parameterValue, Convert.ChangeType(propertyValue, property.PropertyType)); } actionParameterValues.Add(parameterValue); } else { actionParameterValues.Add(value); } } var response = actionMethod.Invoke(controller, actionParameterValues.ToArray()) as HttpResponse; return(response); }
public void ConfigureServcies(IserviceCollection services) { services.AddRazorPages(); services.AddServerSideBlazor(); }
public void ConfigureService(IserviceCollection service) { services.AddTransient <IBookingService, BookingService>(); services.MVC }
public void ConfigureServices(IserviceCollection serviceCollection) { serviceCollection.Add <IUsersService, UsersService>(); serviceCollection.Add <ITripService, TripService>(); }
public static IserviceCollection AddInfrastructure(this IserviceCollection services, IConfiguration configuration) { return(services); }
// /{controller}/{action}/ private static void AutoRegisterActionRoutes(IList <Route> routeTable, IMvcApplication application, IserviceCollection serviceCollection) { var controllers = application.GetType().Assembly.GetTypes() .Where(type => type.IsSubclassOf(typeof(Controller)) && !type.IsAbstract); foreach (var controller in controllers) { var actions = controller.GetMethods() .Where(x => !x.IsSpecialName && !x.IsConstructor && x.IsPublic && x.DeclaringType == controller); foreach (var action in actions) { string url = "/" + controller.Name.Replace("Controller", string.Empty) + "/" + action.Name; var attribute = action.GetCustomAttributes() .FirstOrDefault(x => x.GetType() .IsSubclassOf(typeof(HttpMethodAttribute))) as HttpMethodAttribute; var httpActionType = HttpMethodType.Get; if (attribute != null) { httpActionType = attribute.Type; if (attribute.Url != null) { url = attribute.Url; } } routeTable.Add(new Route(httpActionType, url, (request) => InvokeAction(request, serviceCollection, controller, action))); } } }
public void ConfigureServices(IserviceCollection serviceCollection) { serviceCollection.Add <IUsersService, UsersService>(); serviceCollection.Add <IProductService, ProductService>(); }
public void ConfigureServices(IserviceCollection serviceCollection) { serviceCollection.Add <IUsersService, UsersService>(); serviceCollection.Add <IProblemsService, ProblemsService>(); serviceCollection.Add <ISubmissionsService, SubmissionsService>(); }