/// <summary> /// Gets the region view mapping action. /// </summary> /// <param name="method">The method.</param> /// <param name="attribute">The attribute.</param> /// <returns></returns> protected static Action <RegionMapping, RegionViewMappingPayload> GetRegionViewMappingAction( MethodInfo method, ViewMappingActionAttribute attribute) { var parameters = method.GetParameters(); if (parameters.Length < 2) { return(null); } var p1 = parameters[0]; if (p1 == null || p1.ParameterType != typeof(RegionMapping)) { return(null); } var p2 = parameters[1]; if (p2 == null || p2.ParameterType != typeof(RegionViewMappingPayload)) { return(null); } Action <RegionMapping, RegionViewMappingPayload> act = (mapping, payload) => InvokeRegionViewMappingAction(method, attribute, mapping, payload); return(act); }
/// <summary> /// Invokes the region view mapping action. /// </summary> /// <param name="method">The method.</param> /// <param name="attribute">The attribute.</param> /// <param name="mapping">The mapping.</param> /// <param name="payload">The payload.</param> protected static void InvokeRegionViewMappingAction( MethodInfo method, ViewMappingActionAttribute attribute, RegionMapping mapping, RegionViewMappingPayload payload) { var canProceed = attribute.BeforeAction(method.DeclaringType, method, mapping, payload); if (!canProceed) { return; } method.Invoke(mapping, new object[] { mapping, payload }); attribute.AfterAction(method.DeclaringType, method, mapping, payload); }