エンティティのいくつかの単例汎用型

8486 ワード

このシールは単利のいくつかの書き方を議論するのではなく、stringのような既存のクラスを単利に拡張する.Emptyの概念.
直接ドアを開けて山を見て、単例の汎用型を見てみましょう.
 1     ///Copyright (c)      Q397386036
 2     /// <summary>
 3     ///     
 4     /// </summary>
 5     /// <typeparam name="T"></typeparam>
 6     public static class Singleton<T>
 7         where T :  new()
 8     {
 9         private readonly static T empty = new T();
10         public static T Empty
11         {
12             get
13             {
14                 return empty;
15             }
16         }
17     }
18 
19     /// <summary>
20     /// List     
21     /// </summary>
22     /// <typeparam name="T"></typeparam>
23     public static class SingletonList<T>
24     {
25         public static List<T> Empty
26         {
27             get
28             {
29                 return Singleton<List<T>>.Empty;
30             }
31         }
32     }
33     /// <summary>
34     /// Array     
35     /// </summary>
36     /// <typeparam name="T"></typeparam>
37     public static class SingletonArray<T>
38     {
39         private readonly static T[] empty = new T[0];
40         public static T[] Empty
41         {
42             get
43             {
44                 return empty;
45             }
46         }
47     }
48 
49     public static class SingletonCollection<T>
50     {
51         public static ICollection<T> Empty
52         {
53             get
54             {
55                 return SingletonList<T>.Empty;
56             }
57         }
58     }

 
実際の用途例:
如果得到奥布杰克的话,可以进行null值的判断,有可能进行西肯斯的动作。首先,关于这种情况扩大方法.1 public static class EntityExtensions 2 { 3 public static T Instance<T>(this T t) 4 where T : class,new() 5 { 6 return t ?? Singleton<T>.Empty; 7 } 8}在这种情况下不需要进行null判定,而是直接使用空的价格。例如:entity.Instance(); MVCではCreateとEditの書き方が大きく異なりますが、実際には使用単利Object,作为Ed it View初期化Views.1 public ActionResult Create() 2 { 3 return View(Singleton<DemoModel>.Empty); 4}在一般的mvc中可能会出现他的价值,但在特定的动作中完全出现他的价值.例如,99出版システムアーキテクチャでは、Model UIの生産プロセスが必要になります.