# System.ComponentModel.DataAnnotations ``` diff +namespace System.ComponentModel.DataAnnotations { + public class AssociatedMetadataTypeTypeDescriptionProvider : TypeDescriptionProvider { + public AssociatedMetadataTypeTypeDescriptionProvider(Type type); + public AssociatedMetadataTypeTypeDescriptionProvider(Type type, Type associatedMetadataType); + public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance); + } + public sealed class AssociationAttribute : Attribute { + public AssociationAttribute(string name, string thisKey, string otherKey); + public bool IsForeignKey { get; set; } + public string Name { get; } + public string OtherKey { get; } + public IEnumerable OtherKeyMembers { get; } + public string ThisKey { get; } + public IEnumerable ThisKeyMembers { get; } + } + public class CompareAttribute : ValidationAttribute { + public CompareAttribute(string otherProperty); + public string OtherProperty { get; } + public string OtherPropertyDisplayName { get; } + public override bool RequiresValidationContext { get; } + public override string FormatErrorMessage(string name); + protected override ValidationResult IsValid(object value, ValidationContext validationContext); + } + public sealed class ConcurrencyCheckAttribute : Attribute { + public ConcurrencyCheckAttribute(); + } + public sealed class CreditCardAttribute : DataTypeAttribute { + public CreditCardAttribute(); + public override bool IsValid(object value); + } + public sealed class CustomValidationAttribute : ValidationAttribute { + public CustomValidationAttribute(Type validatorType, string method); + public string Method { get; } + public Type ValidatorType { get; } + public override string FormatErrorMessage(string name); + protected override ValidationResult IsValid(object value, ValidationContext validationContext); + } + public enum DataType { + CreditCard = 14, + Currency = 6, + Custom = 0, + Date = 2, + DateTime = 1, + Duration = 4, + EmailAddress = 10, + Html = 8, + ImageUrl = 13, + MultilineText = 9, + Password = 11, + PhoneNumber = 5, + PostalCode = 15, + Text = 7, + Time = 3, + Upload = 16, + Url = 12, + } + public class DataTypeAttribute : ValidationAttribute { + public DataTypeAttribute(DataType dataType); + public DataTypeAttribute(string customDataType); + public string CustomDataType { get; } + public DataType DataType { get; } + public DisplayFormatAttribute DisplayFormat { get; protected set; } + public virtual string GetDataTypeName(); + public override bool IsValid(object value); + } + public sealed class DisplayAttribute : Attribute { + public DisplayAttribute(); + public bool AutoGenerateField { get; set; } + public bool AutoGenerateFilter { get; set; } + public string Description { get; set; } + public string GroupName { get; set; } + public string Name { get; set; } + public int Order { get; set; } + public string Prompt { get; set; } + public Type ResourceType { get; set; } + public string ShortName { get; set; } + public bool? GetAutoGenerateField(); + public bool? GetAutoGenerateFilter(); + public string GetDescription(); + public string GetGroupName(); + public string GetName(); + public int? GetOrder(); + public string GetPrompt(); + public string GetShortName(); + } + public class DisplayColumnAttribute : Attribute { + public DisplayColumnAttribute(string displayColumn); + public DisplayColumnAttribute(string displayColumn, string sortColumn); + public DisplayColumnAttribute(string displayColumn, string sortColumn, bool sortDescending); + public string DisplayColumn { get; } + public string SortColumn { get; } + public bool SortDescending { get; } + } + public class DisplayFormatAttribute : Attribute { + public DisplayFormatAttribute(); + public bool ApplyFormatInEditMode { get; set; } + public bool ConvertEmptyStringToNull { get; set; } + public string DataFormatString { get; set; } + public bool HtmlEncode { get; set; } + public string NullDisplayText { get; set; } + public Type NullDisplayTextResourceType { get; set; } + public string GetNullDisplayText(); + } + public sealed class EditableAttribute : Attribute { + public EditableAttribute(bool allowEdit); + public bool AllowEdit { get; } + public bool AllowInitialValue { get; set; } + } + public sealed class EmailAddressAttribute : DataTypeAttribute { + public EmailAddressAttribute(); + public override bool IsValid(object value); + } + public sealed class EnumDataTypeAttribute : DataTypeAttribute { + public EnumDataTypeAttribute(Type enumType); + public Type EnumType { get; } + public override bool IsValid(object value); + } + public sealed class FileExtensionsAttribute : DataTypeAttribute { + public FileExtensionsAttribute(); + public string Extensions { get; set; } + public override string FormatErrorMessage(string name); + public override bool IsValid(object value); + } + public sealed class FilterUIHintAttribute : Attribute { + public FilterUIHintAttribute(string filterUIHint); + public FilterUIHintAttribute(string filterUIHint, string presentationLayer); + public FilterUIHintAttribute(string filterUIHint, string presentationLayer, params object[] controlParameters); + public IDictionary ControlParameters { get; } + public string FilterUIHint { get; } + public string PresentationLayer { get; } + public override bool Equals(object obj); + public override int GetHashCode(); + } + public interface IValidatableObject { + IEnumerable Validate(ValidationContext validationContext); + } + public sealed class KeyAttribute : Attribute { + public KeyAttribute(); + } + public class MaxLengthAttribute : ValidationAttribute { + public MaxLengthAttribute(); + public MaxLengthAttribute(int length); + public int Length { get; } + public override string FormatErrorMessage(string name); + public override bool IsValid(object value); + } + public sealed class MetadataTypeAttribute : Attribute { + public MetadataTypeAttribute(Type metadataClassType); + public Type MetadataClassType { get; } + } + public class MinLengthAttribute : ValidationAttribute { + public MinLengthAttribute(int length); + public int Length { get; } + public override string FormatErrorMessage(string name); + public override bool IsValid(object value); + } + public sealed class PhoneAttribute : DataTypeAttribute { + public PhoneAttribute(); + public override bool IsValid(object value); + } + public class RangeAttribute : ValidationAttribute { + public RangeAttribute(double minimum, double maximum); + public RangeAttribute(int minimum, int maximum); + public RangeAttribute(Type type, string minimum, string maximum); + public bool ConvertValueInInvariantCulture { get; set; } + public object Maximum { get; } + public object Minimum { get; } + public Type OperandType { get; } + public bool ParseLimitsInInvariantCulture { get; set; } + public override string FormatErrorMessage(string name); + public override bool IsValid(object value); + } + public class RegularExpressionAttribute : ValidationAttribute { + public RegularExpressionAttribute(string pattern); + public int MatchTimeoutInMilliseconds { get; set; } + public string Pattern { get; } + public override string FormatErrorMessage(string name); + public override bool IsValid(object value); + } + public class RequiredAttribute : ValidationAttribute { + public RequiredAttribute(); + public bool AllowEmptyStrings { get; set; } + public override bool IsValid(object value); + } + public class ScaffoldColumnAttribute : Attribute { + public ScaffoldColumnAttribute(bool scaffold); + public bool Scaffold { get; } + } + public class StringLengthAttribute : ValidationAttribute { + public StringLengthAttribute(int maximumLength); + public int MaximumLength { get; } + public int MinimumLength { get; set; } + public override string FormatErrorMessage(string name); + public override bool IsValid(object value); + } + public sealed class TimestampAttribute : Attribute { + public TimestampAttribute(); + } + public class UIHintAttribute : Attribute { + public UIHintAttribute(string uiHint); + public UIHintAttribute(string uiHint, string presentationLayer); + public UIHintAttribute(string uiHint, string presentationLayer, params object[] controlParameters); + public IDictionary ControlParameters { get; } + public string PresentationLayer { get; } + public string UIHint { get; } + public override bool Equals(object obj); + public override int GetHashCode(); + } + public sealed class UrlAttribute : DataTypeAttribute { + public UrlAttribute(); + public override bool IsValid(object value); + } + public abstract class ValidationAttribute : Attribute { + protected ValidationAttribute(); + protected ValidationAttribute(Func errorMessageAccessor); + protected ValidationAttribute(string errorMessage); + public string ErrorMessage { get; set; } + public string ErrorMessageResourceName { get; set; } + public Type ErrorMessageResourceType { get; set; } + protected string ErrorMessageString { get; } + public virtual bool RequiresValidationContext { get; } + public virtual string FormatErrorMessage(string name); + public ValidationResult GetValidationResult(object value, ValidationContext validationContext); + public virtual bool IsValid(object value); + protected virtual ValidationResult IsValid(object value, ValidationContext validationContext); + public void Validate(object value, ValidationContext validationContext); + public void Validate(object value, string name); + } + public sealed class ValidationContext : IServiceProvider { + public ValidationContext(object instance); + public ValidationContext(object instance, IDictionary items); + public ValidationContext(object instance, IServiceProvider serviceProvider, IDictionary items); + public string DisplayName { get; set; } + public IDictionary Items { get; } + public string MemberName { get; set; } + public object ObjectInstance { get; } + public Type ObjectType { get; } + public object GetService(Type serviceType); + public void InitializeServiceProvider(Func serviceProvider); + } + public class ValidationException : Exception { + public ValidationException(); + public ValidationException(ValidationResult validationResult, ValidationAttribute validatingAttribute, object value); + protected ValidationException(SerializationInfo info, StreamingContext context); + public ValidationException(string message); + public ValidationException(string errorMessage, ValidationAttribute validatingAttribute, object value); + public ValidationException(string message, Exception innerException); + public ValidationAttribute ValidationAttribute { get; } + public ValidationResult ValidationResult { get; } + public object Value { get; } + } + public class ValidationResult { + public static readonly ValidationResult Success; + protected ValidationResult(ValidationResult validationResult); + public ValidationResult(string errorMessage); + public ValidationResult(string errorMessage, IEnumerable memberNames); + public string ErrorMessage { get; set; } + public IEnumerable MemberNames { get; } + public override string ToString(); + } + public static class Validator { + public static bool TryValidateObject(object instance, ValidationContext validationContext, ICollection validationResults); + public static bool TryValidateObject(object instance, ValidationContext validationContext, ICollection validationResults, bool validateAllProperties); + public static bool TryValidateProperty(object value, ValidationContext validationContext, ICollection validationResults); + public static bool TryValidateValue(object value, ValidationContext validationContext, ICollection validationResults, IEnumerable validationAttributes); + public static void ValidateObject(object instance, ValidationContext validationContext); + public static void ValidateObject(object instance, ValidationContext validationContext, bool validateAllProperties); + public static void ValidateProperty(object value, ValidationContext validationContext); + public static void ValidateValue(object value, ValidationContext validationContext, IEnumerable validationAttributes); + } +} ```