<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      將不確定變為確定~整形變量是否可以進行位運算(像枚舉類型一樣)

      回到目錄

      如果您看到這個題目,覺得有點怪,那說明你是一個高人,最起碼比我高的多,呵呵。

      前幾天做了一個公用后臺管理系統的項目,其中有一個地方涉及到權限管理的,即為每一個按鈕賦一個權限,然后它權限匯總到角色表里,即一種角色有一些操作權限
      ,表結構如下:

      我們看到OperatorAuthority就是操作權限的意思,它是個int類型的,一個role有一個OperatorAuthority,那我們應該怎么把多個權限存儲到OperatorAuthority字段里呢?

      這時,我想到了枚舉類型的位運算,所以我把權限枚舉設計成了這樣:

       1   [Flags]
       2     public enum UserOperatorRole
       3     {
       4         #region 通用操作權限
       5 
       6         /// <summary>
       7         /// 沒有任何操作權限
       8         /// </summary>
       9         [Description("沒有權限")]
      10         NoneAny = 1,
      11         /// <summary>
      12         /// 查看事件
      13         /// </summary>
      14         [Description("查看事件")]
      15         ReadEvent = 2,
      16         /// <summary>
      17         /// 添加事件
      18         /// </summary>
      19         [Description("添加事件")]
      20         AddEvent = 4,
      21         /// <summary>
      22         /// 修改事件
      23         /// </summary>
      24         [Description("修改事件")]
      25         ModifyEvent = 8,
      26         /// <summary>
      27         /// 刪除事件
      28         /// </summary>
      29         [Description("刪除事件")]
      30         DeleteEvent = 16,
      31         /// <summary>
      32         ///  審批
      33         /// </summary>
      34         [Description("審批")]
      35         ApproveEvent = 32
      36 
      37         #endregion
      38 
      39 
      40 
      41 
      42     }

      然后在存儲時,使用枚舉的位運算,對它進行求和即可,如查看事和修改事件的結果被存儲為10,即它只能是2和8相加的結果,如果希望了解更多位運算,可以查看我的這篇文章

      這樣的設計,對于單個項目是沒有任何問題的,如果希望添加一種新的功能,如“訂閱”,我們只要修改這個枚舉類,再為它添加一種訂閱的邏輯即可。(當然,這不符合開閉原則了)

      但我設計的偏偏是一個“通用的系統”,即可能會有多個不同的項目去引用這個系統,這個系統相當于一個底層的核心系統,這時問題就來了,系統A的權限需要添加一個“撤單”權限,而系統B需要有一個“發布產品”及“管理產品”的權限,這下子我也完蛋了,這種需求被不斷的添加進來,我可怎么辦呀!

      主角登場了,整形也來個們運算吧,首先我把所有公用權限進行統計,放在一張表里,如果其它系統有新需求,在它的權限表里繼續添加即可,表結構如下:

      這樣的設計,我認為完成了,但對于一個int32類型來說,它是否也可以支持按位計算呢?我又一想,枚舉類型本來就是繼承int,short,long,byte等整形類型的,所以,我認識int32也完全可以支持位運算,結果我的測試表明我的想法是正確的,呵呵。

      這時,我們通用按鈕的建立,就變成了這樣,接收一個Enum這個枚舉類型的統一基類,這樣不管A系統和B系統自定義什么樣的枚舉,我都通通接受,呵呵。

       1  /// <summary>
       2         /// 按鈕對象,只產生按鈕,對按鈕的click等事件需要在具體頁面自己添加
       3         /// </summary>
       4         /// <param name="html"></param>
       5         /// <param name="buttonName">按鈕ID</param>
       6         /// <param name="displayName">按鈕顯示名稱</param>
       7         /// <param name="userOperatorRole">按鈕權限</param>
       8         /// <param name="buttonType">按鈕類型</param>
       9         /// <returns></returns>
      10         public static MvcHtmlString CreateButton(this HtmlHelper html, string buttonName, string displayName, Enum userOperatorRole, ButtonType buttonType)
      11         {
      12             var tag = new TagBuilder("input");
      13             tag.AddCssClass("button");
      14             tag.Attributes["Name"] = buttonName;
      15             tag.Attributes["ID"] = buttonName;
      16             tag.Attributes["Value"] = displayName;
      17             tag.Attributes["Type"] = buttonType.ToString();
      18             if ((Convert.ToInt32(SessionAction.ReadSession("UserOperatorRole")) & Convert.ToInt32(userOperatorRole)) == 0)
      19             {
      20                 tag.Attributes["disabled"] = "disabled";
      21                 tag.AddCssClass("button gray");
      22             }
      23             return MvcHtmlString.Create(tag.ToString());
      24         }

      程序員在開發時,枚舉類型起到了直觀,準確和可讀性強的優點,所以,對于一些固定的少限的元素集可以采用枚舉類型和存儲。

      小知識:Enum是枚舉類型的基類

                 Delegate是委托類型的基類

      回到目錄

      posted @ 2012-06-08 10:51  張占嶺  閱讀(2610)  評論(14)    收藏  舉報
      主站蜘蛛池模板: аⅴ天堂国产最新版在线中文| 十八禁午夜福利免费网站 | 亚洲欧美不卡高清在线| 平乐县| 亚洲精品日韩久久精品| 韩国美女福利视频在线观看| 狠狠五月深爱婷婷网| 国产免费视频一区二区| 在线精品国产中文字幕| 欧美人与动zozo在线播放| 亚洲人成电影网站 久久影视| 日本三级成本人网站| 又黄又刺激又黄又舒服| 高颜值午夜福利在线观看| 制服jk白丝h无内视频网站| 久久综合亚洲色一区二区三区| 亚洲乱色一区二区三区丝袜| 福利一区二区视频在线| 日韩精品一区二区三区视频| 国产熟睡乱子伦午夜视频| 九九热在线观看精品视频| 亚洲第一福利网站在线观看| 国产精品自拍中文字幕| 亚洲国产成人精品区综合| 特黄三级又爽又粗又大| 亚洲大尺度无码专区尤物| 国产精品一区二区三区黄| 国产亚洲精品AA片在线爽| 精品无码av无码专区| 成熟女人特级毛片www免费| 亚洲精品日本一区二区| 美女胸18下看禁止免费视频| 日韩精品 在线 国产 丝袜| 国产精品福利一区二区三区 | 亚洲 中文 欧美 日韩 在线| 黄色亚洲一区二区在线观看| 亚洲区1区3区4区中文字幕码| 久久久久无码精品国产h动漫| 国产一区在线播放无遮挡| 欧美日韩视频综合一区无弹窗| 亚洲一区成人在线视频|