/// <summary> /// Copy constructor. /// </summary> /// <param name="other">The model to copy.</param> public PageParameterModel(PageParameterModel other) : base(other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } Handler = other.Handler; ParameterInfo = other.ParameterInfo; }
public PageParameterModel(PageParameterModel other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } Handler = other.Handler; Attributes = new List <object>(other.Attributes); BindingInfo = other.BindingInfo == null ? null : new BindingInfo(other.BindingInfo); ParameterInfo = other.ParameterInfo; ParameterName = other.ParameterName; Properties = new Dictionary <object, object>(other.Properties); }
public void CreateHandlerMethods_CopiesParameterDescriptorsFromParameterModel() { // Arrange var actionDescriptor = new PageActionDescriptor(); var handlerTypeInfo = typeof(HandlerWithParameters).GetTypeInfo(); var handlerMethod = handlerTypeInfo.GetMethod(nameof(HandlerWithParameters.OnPost)); var parameters = handlerMethod.GetParameters(); var parameterModel1 = new PageParameterModel(parameters[0], new object[0]) { ParameterName = "test-name" }; var parameterModel2 = new PageParameterModel(parameters[1], new object[0]) { BindingInfo = new BindingInfo(), }; var handlerModel = new PageHandlerModel(handlerMethod, new object[0]) { Parameters = { parameterModel1, parameterModel2, } }; var pageApplicationModel = new PageApplicationModel(actionDescriptor, handlerTypeInfo, new object[0]) { HandlerMethods = { handlerModel, } }; // Act var handlerDescriptors = CompiledPageActionDescriptorBuilder.CreateHandlerMethods(pageApplicationModel); // Assert Assert.Collection( Assert.Single(handlerDescriptors).Parameters, p => { Assert.Equal(parameters[0], p.ParameterInfo); Assert.Equal(typeof(string), p.ParameterType); Assert.Equal(parameterModel1.ParameterName, p.Name); }, p => { Assert.Equal(parameters[1], p.ParameterInfo); Assert.Equal(typeof(int), p.ParameterType); Assert.Same(parameterModel2.BindingInfo, p.BindingInfo); }); }