using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text; namespace Knoks.Framework.Extentions { public class NotZeroAttribute : RangeAttribute { public NotZeroAttribute() : base(typeof(Decimal), 1e-8m.ToString(), Decimal.MaxValue.ToString()) { ErrorMessage = "Please provide value for {0}"; } public NotZeroAttribute(Type operandType) : base(operandType, GetMinimum(operandType), GetMaximum(operandType)) { ErrorMessage = "Please provide value for {0}"; } private static string GetMinimum(Type operandType) { if (operandType == typeof(int) || operandType==typeof(long)) return "1"; if (operandType == typeof(float)) return float.Epsilon.ToString(); if (operandType == typeof(double)) return double.Epsilon.ToString(); if (operandType == typeof(decimal)) return 1e-8.ToString(); return "1"; } private static string GetMaximum(Type operandType) { if (operandType == typeof(int)) return Int32.MaxValue.ToString(); if (operandType == typeof(long)) return long.MaxValue.ToString(); if (operandType == typeof(float)) return float.MaxValue.ToString(); if (operandType == typeof(double)) return double.MaxValue.ToString(); if (operandType == typeof(decimal)) return 1e-8.ToString(); return Int32.MaxValue.ToString(); } } }