namespace System.Web.ModelBinding { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; // Describes a complex model, but uses a collection rather than individual properties as the data store. public class ComplexModel { public ComplexModel(ModelMetadata modelMetadata, IEnumerable propertyMetadata) { if (modelMetadata == null) { throw new ArgumentNullException("modelMetadata"); } if (propertyMetadata == null) { throw new ArgumentNullException("propertyMetadata"); } ModelMetadata = modelMetadata; PropertyMetadata = new ReadOnlyCollection(propertyMetadata.ToList()); Results = new Dictionary(); } public ModelMetadata ModelMetadata { get; private set; } public ReadOnlyCollection PropertyMetadata { get; private set; } // Contains entries corresponding to each property against which binding was // attempted. If binding failed, the entry's value will be null. If binding // was never attempted, this dictionary will not contain a corresponding // entry. public IDictionary Results { get; private set; } } }