OSDN Git Service

#28149 テンプレート名が空の不正なテンプレート呼び出しで処理が落ちていたのを修正,
[wptscs/wpts.git] / HmLib / Utilities / ObjectUtils.cs
1 // ================================================================================================
2 // <summary>
3 //      Apache Commons LangのObjectUtilsを参考にしたユーティリティクラスソース。</summary>
4 //
5 // <copyright file="ObjectUtils.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
15     /// <summary>
16     /// Apache Commons LangのObjectUtilsを参考にしたユーティリティクラスです。
17     /// </summary>
18     /// <remarks>
19     /// Apache Commons Lang - ObjectUtils
20     /// http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/ObjectUtils.html
21     /// </remarks>
22     public static class ObjectUtils
23     {
24         #region 初期化メソッド
25
26         /// <summary>
27         /// オブジェクトが<c>null</c>の場合に指定されたオブジェクトを返す。
28         /// </summary>
29         /// <param name="obj">テストするオブジェクト。<c>null</c>も可。</param>
30         /// <param name="defaultValue">渡されたオブジェクトが<c>null</c>の場合に返されるデフォルトのオブジェクト。</param>
31         /// <returns>渡されたオブジェクト、<c>null</c>の場合にはデフォルトのオブジェクト。</returns>
32         /// <typeparam name="T">オブジェクトの型。</typeparam>
33         public static T DefaultIfNull<T>(T obj, T defaultValue)
34         {
35             if (obj == null)
36             {
37                 return defaultValue;
38             }
39
40             return obj;
41         }
42
43         #endregion
44
45         #region null値許容メソッド
46
47         /// <summary>
48         /// 二つのオブジェクトが同じかを比較する。両方がまたは片方が<c>null</c>の場合も許容する。
49         /// </summary>
50         /// <param name="object1">比較する一つ目のオブジェクト。<c>null</c>も可。</param>
51         /// <param name="object2">比較する二つ目のオブジェクト。<c>null</c>も可。</param>
52         /// <returns>渡されたオブジェクトを<c>Equals</c>した結果。両方が<c>null</c>の場合は<c>true</c>を返す。</returns>
53         public static new bool Equals(object object1, object object2)
54         {
55             if (object1 == null && object2 == null)
56             {
57                 return true;
58             }
59             else if (object1 == null || object2 == null)
60             {
61                 return false;
62             }
63
64             return object1.Equals(object2);
65         }
66
67         /// <summary>
68         /// オブジェクトが<c>null</c>の場合に空の文字列を返す<see cref="Object.ToString"/>。
69         /// </summary>
70         /// <param name="obj"><c>ToString</c>するオブジェクト。<c>null</c>も可。</param>
71         /// <returns>渡されたオブジェクトを<c>ToString</c>した結果。<c>null</c>の場合には空の文字列。</returns>
72         public static string ToString(object obj)
73         {
74             return ObjectUtils.ToString(obj, String.Empty);
75         }
76
77         /// <summary>
78         /// オブジェクトが<c>null</c>の場合に指定された文字列を返す<see cref="Object.ToString"/>。
79         /// </summary>
80         /// <param name="obj"><c>ToString</c>するオブジェクト。<c>null</c>も可。</param>
81         /// <param name="nullStr">渡されたオブジェクトが<c>null</c>の場合に返される文字列。<c>null</c>も可。</param>
82         /// <returns>渡されたオブジェクトを<c>ToString</c>した結果。<c>null</c>の場合には指定された文字列。</returns>
83         public static string ToString(object obj, string nullStr)
84         {
85             if (obj == null)
86             {
87                 return nullStr;
88             }
89
90             return obj.ToString();
91         }
92
93         #endregion
94     }
95 }