/// <summary> /// 入力値検証処理 /// </summary> /// <param name="value">入力値</param> /// <param name="cultureInfo">カルチャー情報</param> /// <returns>入力値検証結果</returns> public override ValidationResult Validate(object value, CultureInfo cultureInfo) { int max = 0; int convertBase; // ビット幅から最大値を算出 for (int cnt = 0; cnt < BitWidth; cnt++) { max <<= 1; max |= 1; } // 32bit整数変換用基数判定 switch (StringBase) { case StringBases.Binary: convertBase = 2; break; case StringBases.Decimal: convertBase = 10; break; case StringBases.Hexadecimal: convertBase = 16; break; default: convertBase = 10; break; } // 入力値がNULLの場合はNGを返す if (null == value) { return(new ValidationResult(false, "値を入力してください。")); } // 入力値の文字列が空の場合はNGを返す string str = value.ToString(); if (string.IsNullOrEmpty(str)) { return(new ValidationResult(false, "値を入力してください。")); } try { // 入力値が指定されたビット幅に収まらない場合はNGを返す if (Convert.ToUInt32(value.ToString(), convertBase) > max) { return(new ValidationResult(false, "値が" + BitWidth.ToString() + "bitの範囲を超えています。")); } } catch { // 32bit整数変換に失敗する場合はNGを返す return(new ValidationResult(false, "値が" + BitWidth.ToString() + "bitの範囲を超えているか、" + convertBase.ToString() + "進法ではありません。")); } // 上記のチェックにパスしたらOKを返す return(ValidationResult.ValidResult); }