1 // ================================================================================================
3 // バリデート処理に関するユーティリティクラスソース。</summary>
5 // <copyright file="Validate.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Utilities
14 using System.Collections.Generic;
17 /// バリデート処理に関するユーティリティクラスです。
19 /// <remarks>一部メソッドは、Apache Commons LangのValidateを参考にしています。</remarks>
20 public static class Validate
25 /// 渡されたオブジェクトをチェックし、<c>null</c>の場合に例外をスローする。
27 /// <typeparam name="T">オブジェクトの型。</typeparam>
28 /// <param name="obj"><c>null</c>かどうかをチェックするオブジェクト。</param>
29 /// <param name="paramName">オブジェクトが<c>null</c>の場合に例外に渡されるパラメータ名。デフォルトは<c>value</c>。</param>
30 /// <returns>渡されたオブジェクト。</returns>
31 /// <exception cref="ArgumentNullException">オブジェクトが<c>null</c>。</exception>
32 public static T NotNull<T>(T obj, string paramName = "value")
36 throw new ArgumentNullException(paramName);
47 /// 渡された文字列をチェックし、空(<c>null</c>または長さ0)の場合に例外をスローする。
49 /// <param name="str">空かどうかをチェックする文字列。</param>
50 /// <param name="paramName">文字列が空の場合に例外に渡されるパラメータ名。デフォルトは<c>value</c>。</param>
51 /// <returns>渡された文字列。</returns>
52 /// <exception cref="ArgumentNullException">文字列が<c>null</c>。</exception>
53 /// <exception cref="ArgumentException">文字列が長さ0。</exception>
54 public static string NotEmpty(string str, string paramName = "value")
56 if (NotNull(str, paramName) == String.Empty)
58 throw new ArgumentException("The validated string is empty", paramName);
69 /// 渡された文字列をチェックし、空(<c>null</c>または空か空白のみ)の場合に例外をスローする。
71 /// <param name="str">空かどうかをチェックする文字列。</param>
72 /// <param name="paramName">文字列が空の場合に例外に渡されるパラメータ名。デフォルトは<c>value</c>。</param>
73 /// <returns>渡された文字列。</returns>
74 /// <exception cref="ArgumentNullException">文字列が<c>null</c>。</exception>
75 /// <exception cref="ArgumentException">文字列が空か空白のみ。</exception>
76 public static string NotBlank(string str, string paramName = "value")
78 if (String.IsNullOrWhiteSpace(NotNull(str, paramName)))
80 throw new ArgumentException("The validated string is blank", paramName);
91 /// 渡された文字列をチェックし、文字列が<c>null</c>またはインデックスが範囲外の場合に例外をスローする。
93 /// <param name="str">文字列長をチェックする文字列。</param>
94 /// <param name="index">文字列内に含まれることが期待されるインデックス。</param>
95 /// <param name="paramNameStr">文字列が<c>null</c>の場合に例外に渡されるパラメータ名。デフォルトは<c>value</c>。</param>
96 /// <param name="paramNameIndex">インデックスが範囲外の場合に例外に渡されるパラメータ名。</param>
97 /// <exception cref="ArgumentNullException"><paramref name="str"/>が<c>null</c>の場合。</exception>
98 /// <exception cref="ArgumentOutOfRangeException">インデックスが範囲外の場合。</exception>
99 public static void InRange(string str, int index, string paramNameStr = "value", string paramNameIndex = "index")
101 if (NotNull(str, paramNameStr).Length <= index || index < 0)
103 throw new ArgumentOutOfRangeException(paramNameIndex);
108 /// 渡されたリストをチェックし、リストが<c>null</c>またはインデックスが範囲外の場合に例外をスローする。
110 /// <typeparam name="T">リスト内のオブジェクトの型。</typeparam>
111 /// <param name="list">長さをチェックするリスト。</param>
112 /// <param name="index">リスト内に含まれることが期待されるインデックス。</param>
113 /// <param name="paramNameList">リストが<c>null</c>の場合に例外に渡されるパラメータ名。デフォルトは<c>value</c>。</param>
114 /// <param name="paramNameIndex">インデックスが範囲外の場合に例外に渡されるパラメータ名。デフォルトは<c>index</c>。</param>
115 /// <exception cref="ArgumentNullException"><paramref name="list"/>が<c>null</c>の場合。</exception>
116 /// <exception cref="ArgumentOutOfRangeException">インデックスが範囲外の場合。</exception>
117 public static void InRange<T>(IList<T> list, int index, string paramNameList = "value", string paramNameIndex = "index")
119 if (NotNull(list, paramNameList).Count <= index || index < 0)
121 throw new ArgumentOutOfRangeException(paramNameIndex);