ant-design-blazor/components/form/Internal/Validate/ValidationAttribute/NumberMinAttribute.cs

49 lines
1.7 KiB
C#
Raw Normal View History

using System;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace AntDesign.Internal.Form.Validate
{
internal class NumberMinAttribute : ValidationAttribute
{
internal decimal Min { get; }
internal NumberMinAttribute(decimal min)
{
Min = min;
}
public override string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, ErrorMessageString, name, Min);
}
public override bool IsValid(object value)
{
var type = value.GetType();
var typeMaxValue = GetMaxValueString(type);
var attribute = new RangeAttribute(type, Min.ToString(), typeMaxValue);
return attribute.IsValid(value);
}
private static string GetMaxValueString(Type type)
{
if (type == typeof(byte)) return byte.MaxValue.ToString();
if (type == typeof(short)) return short.MaxValue.ToString();
if (type == typeof(int)) return int.MaxValue.ToString();
if (type == typeof(long)) return long.MaxValue.ToString();
if (type == typeof(float)) return float.MaxValue.ToString();
if (type == typeof(double)) return double.MaxValue.ToString();
if (type == typeof(sbyte)) return sbyte.MaxValue.ToString();
if (type == typeof(ushort)) return ushort.MaxValue.ToString();
if (type == typeof(uint)) return uint.MaxValue.ToString();
if (type == typeof(ulong)) return ulong.MaxValue.ToString();
if (type == typeof(decimal)) return decimal.MaxValue.ToString();
return null;
}
}
}