// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using Microsoft.AspNetCore.Mvc.ModelBinding; namespace Microsoft.AspNetCore.Mvc.ApplicationModels { /// /// Represents a property in a . /// [DebuggerDisplay("PagePropertyModel: Name={PropertyName}")] public class PagePropertyModel : ParameterModelBase, ICommonModel { /// /// Creates a new instance of . /// /// The for the underlying property. /// Any attributes which are annotated on the property. public PagePropertyModel( PropertyInfo propertyInfo, IReadOnlyList attributes) : base(propertyInfo?.PropertyType, attributes) { PropertyInfo = propertyInfo ?? throw new ArgumentNullException(nameof(propertyInfo)); } /// /// Creates a new instance of from a given . /// /// The which needs to be copied. public PagePropertyModel(PagePropertyModel other) : base(other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } Page = other.Page; BindingInfo = BindingInfo == null ? null : new BindingInfo(other.BindingInfo); PropertyInfo = other.PropertyInfo; } /// /// Gets or sets the this is associated with. /// public PageApplicationModel Page { get; set; } MemberInfo ICommonModel.MemberInfo => PropertyInfo; public PropertyInfo PropertyInfo { get; } public string PropertyName { get => Name; set => Name = value; } } }