/// <summary>
 /// Marca una porpiedad para aceptar únicamente valores dentro de un
 /// rango especificado.
 /// </summary>
 /// <typeparam name="TModel">Tipo de modelo descrito.</typeparam>
 /// <typeparam name="TProperty">
 /// Información de tipo devuelto por la propiedad descrita.
 /// </typeparam>
 /// <typeparam name="TViewModel">Tipo de ViewModel editor.</typeparam>
 /// <param name="descriptor">
 /// Instancia de descriptor de propiedad sobre la cual aplicar la
 /// configuración.
 /// </param>
 /// <param name="range">
 /// Rango de valores válidos para esta propiedad.
 /// </param>
 /// <returns>
 /// La misma instancia que <paramref name="descriptor"/>, permitiendo
 /// el uso de sintaxis Fluent.
 /// </returns>
 public static IPropertyDescriptor <TModel, TProperty, TViewModel> Range <TModel, TProperty, TViewModel>(this IPropertyDescriptor <TModel, TProperty, TViewModel> descriptor, Range <TProperty> range)
     where TModel : Model
     where TProperty : IComparable <TProperty>
     where TViewModel : ViewModel <TModel>
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), range));
 }
 /// <summary>
 /// Marca una propiedad de forma explícita con el modo de nulabilidad a
 /// utilizar para generar el control de edición en la página de Crud.
 /// </summary>
 /// <typeparam name="TModel">Tipo de modelo descrito.</typeparam>
 /// <typeparam name="TProperty">
 /// Información de tipo devuelto por la propiedad descrita.
 /// </typeparam>
 /// <typeparam name="TViewModel">Tipo de ViewModel editor.</typeparam>
 /// <param name="descriptor">
 /// Instancia de descriptor de propiedad sobre la cual aplicar la
 /// configuración.
 /// </param>
 /// <param name="mode">
 /// Modo de nulabilidad a utilizar para generar el control de edición
 /// en la página de Crud.
 /// </param>
 /// <returns>
 /// La misma instancia que <paramref name="descriptor"/>, permitiendo
 /// el uso de sintaxis Fluent.
 /// </returns>
 public static IPropertyDescriptor <TModel, TProperty, TViewModel> NullMode <TModel, TProperty, TViewModel>(this IPropertyDescriptor <TModel, TProperty, TViewModel> descriptor, NullabilityMode mode) where TModel : Model where TProperty : class where TViewModel : ViewModel <TModel>
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), mode));
 }
 internal static IPropertyDescriptor <TModel, TChild, TViewModel> EntityOptions <TModel, TViewModel, TChild>
     (IPropertyDescriptor <TModel, TChild, TViewModel> descriptor, EntityWidgetOptions options)
     where TModel : Model where TViewModel : ViewModel <TModel> where TChild : Model
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), options));
 }
 internal static IPropertyDescriptor <TModel, string, TViewModel> TextKind <TModel, TViewModel>
     (IPropertyDescriptor <TModel, string, TViewModel> descriptor, TextKind kind)
     where TModel : Model where TViewModel : ViewModel <TModel>
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), kind));
 }
 /// <summary>
 /// Marca un campo de texto con un valor que describe la longitud
 /// máxima admitida por el mismo.
 /// </summary>
 /// <typeparam name="TModel">Tipo de modelo descrito.</typeparam>
 /// <typeparam name="TViewModel">Tipo de ViewModel editor.</typeparam>
 /// <param name="descriptor">
 /// Instancia de descriptor de propiedad sobre la cual aplicar la
 /// configuración.
 /// </param>
 /// <param name="maxLength">
 /// Longitud máxima a admitir para el campo.
 /// </param>
 /// <returns>
 /// La misma instancia que <paramref name="descriptor"/>, permitiendo
 /// el uso de sintaxis Fluent.
 /// </returns>
 public static IPropertyDescriptor <TModel, string, TViewModel> MaxLength <TModel, TViewModel>(this IPropertyDescriptor <TModel, string, TViewModel> descriptor, int maxLength) where TModel : Model where TViewModel : ViewModel <TModel>
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), maxLength));
 }
 public static IPropertyDescriptor <TModel, TValue, TViewModel> Selector <TModel, TValue, TViewModel>(this IPropertyDescriptor <TModel, TValue, TViewModel> descriptor, IEnumerable <TValue> source) where TModel : Model where TViewModel : ViewModel <TModel>
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), source));
 }
 public static IPropertyDescriptor <TModel, Guid, TViewModel> NonEntityLink <TModel, TObject, TViewModel>(this IPropertyDescriptor <TModel, Guid, TViewModel> descriptor, IEnumerable <TObject> source) where TModel : Model where TViewModel : ViewModel <TModel> where TObject : IExposeGuid
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), source));
 }