OSDN Git Service

#30244 Visual Studio 2012 Express for Windows Desktop, StyleCop 4.7, WiX 3.6 に合わせたソース...
[wptscs/wpts.git] / HmLib / Utilities / Validate.cs
1 // ================================================================================================
2 // <summary>
3 //      バリデート処理に関するユーティリティクラスソース。</summary>
4 //
5 // <copyright file="Validate.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
7 // <author>
8 //      Honeplus</author>
9 // ================================================================================================
10
11 namespace Honememo.Utilities
12 {
13     using System;
14     using System.Collections.Generic;
15
16     /// <summary>
17     /// バリデート処理に関するユーティリティクラスです。
18     /// </summary>
19     /// <remarks>一部メソッドは、Apache Commons LangのValidateを参考にしています。</remarks>
20     public static class Validate
21     {
22         #region NotNullメソッド
23
24         /// <summary>
25         /// 渡されたオブジェクトをチェックし、<c>null</c>の場合に例外をスローする。
26         /// </summary>
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")
33         {
34             if (obj == null)
35             {
36                 throw new ArgumentNullException(paramName);
37             }
38
39             return obj;
40         }
41
42         #endregion
43
44         #region NotEmptyメソッド
45
46         /// <summary>
47         /// 渡された文字列をチェックし、空(<c>null</c>または長さ0)の場合に例外をスローする。
48         /// </summary>
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")
55         {
56             if (NotNull(str, paramName) == string.Empty)
57             {
58                 throw new ArgumentException("The validated string is empty", paramName);
59             }
60
61             return str;
62         }
63
64         #endregion
65
66         #region NotBlankメソッド
67
68         /// <summary>
69         /// 渡された文字列をチェックし、空(<c>null</c>または空か空白のみ)の場合に例外をスローする。
70         /// </summary>
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")
77         {
78             if (string.IsNullOrWhiteSpace(NotNull(str, paramName)))
79             {
80                 throw new ArgumentException("The validated string is blank", paramName);
81             }
82
83             return str;
84         }
85
86         #endregion
87
88         #region InRangeメソッド
89
90         /// <summary>
91         /// 渡された文字列をチェックし、文字列が<c>null</c>またはインデックスが範囲外の場合に例外をスローする。
92         /// </summary>
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")
100         {
101             if (NotNull(str, paramNameStr).Length <= index || index < 0)
102             {
103                 throw new ArgumentOutOfRangeException(paramNameIndex);
104             }
105         }
106
107         /// <summary>
108         /// 渡されたリストをチェックし、リストが<c>null</c>またはインデックスが範囲外の場合に例外をスローする。
109         /// </summary>
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")
118         {
119             if (NotNull(list, paramNameList).Count <= index || index < 0)
120             {
121                 throw new ArgumentOutOfRangeException(paramNameIndex);
122             }
123         }
124
125         #endregion
126     }
127 }