• 关于继承


    最近做项目用到继承,说实话以前没有具体的用到过, 所以在开始的时候有点懵逼; 后来还是我们老大给的模板, 有点惭愧, 哈哈。

    这是我项目中用到后积累的, 肯定不完整,有什么不足和错误的地方  欢迎大神们提点。

    下面是基类。

     1   public interface IWorkflowProcess
     2     {
     3         List<System.Web.Mvc.SelectListItem> GetNextOperator(int id, int projectId);
     4         List<System.Web.Mvc.SelectListItem> GetNextWF(int projectId);
     5     }
     6     public class WorkflowProcess : IWorkflowProcess
     7     {
     8         public int ID { get; set; }
     9         public string Name { get; set; }
    10         public string Description { get; set; }
    11         public string Controller { get; set; }
    12         public WorkflowProcess()
    13         {
    14         }
    15         public bool CanGetPrerepotNo()
    16         {
    17             return (int)enumUserRole.Reviewer == REASContext.CurrentUser.RoleID || ((int)enumDepartment.EvalueDepartmentTwo == REASContext.CurrentUser.DepartmentID);
    18         }
    19         public bool CanGetRepotNo()
    20         {
    21             return (int)enumUserRole.Reviewer == REASContext.CurrentUser.RoleID;
    22         }
    23         public virtual List<System.Web.Mvc.SelectListItem> GetNextWF(int projectId)
    24         {
    25             var nextprocess = WorkflowManager.NextOf(WorkflowManager.GetByID(ID));
    26             return new List<System.Web.Mvc.SelectListItem>() 
    27                 {            WorkflowManager.GetSelectListItem(nextprocess)
    28                 };
    29         }
    30         public virtual List<System.Web.Mvc.SelectListItem> GetNextOperator(int id, int projectId)
    31         {
    32             return bll_Common.GetOperatorByDepartmentSelectList();
    33         }
    34     }

    子类:

    例1、
    4 public class WF_ReportApprove : WorkflowProcess, IWorkflowProcess 5 { 6 public override List<SelectListItem> GetNextOperator(int id, int projectId) 7 { 8 return bll_Common.GetBeforOperatorSelectList(projectId); 9 } 10 } 11

     例二、

     4 15     public class WF_Balance : WorkflowProcess, IWorkflowProcess
     5 16     {
     7 18         public override List<SelectListItem> GetNextWF(int projectId)
     8 19         {
    10 21             return new List<System.Web.Mvc.SelectListItem>()
    11 22             {
    12 23                 new System.Web.Mvc.SelectListItem()
    13 24                 {
    14 25                     Text =
    15 26                         WorkflowManager.GetByControllerName(enum_WorkflowProcess.WF_Preestimate.GetDescription()).Name,
    16 27                     Value = ((int) enum_WorkflowProcess.WF_Preestimate).ToString(),
    17 28                     Selected = true
    18 29                 },
    19 30 
    20 31                 new System.Web.Mvc.SelectListItem()
    21 32                 {
    22 33                     Text = WorkflowManager.GetByControllerName(enum_WorkflowProcess.WF_Archive.GetDescription()).Name,
    23 34                     Value = ((int) enum_WorkflowProcess.WF_Archive).ToString()
    24 35                 }
    25 36             };
    27 38         }
    28 39 
    29 40         public override List<SelectListItem> GetNextOperator(int id, int projectId)
    30 41         {
    31 42             if (id == (int)enum_WorkflowProcess.WF_Preestimate)
    32 43                 if (REASContext.CurrentUser.DeparmentTypeID == (int)enumDepartmentType.BranchOffice)
    33 44                 {
    34 45                     var user = bll_LoginUser.GetAll().First(p => p.ManageDepID.HasValue && p.ManageDepID.Value == REASContext.CurrentUser.DepartmentID);
    35 46                     return new List<SelectListItem>()
    36 47                     {
    37 48                         new SelectListItem()
    38 49                         {
    39 50                             Text = user.DisplayName,
    40 51                             Value = user.ID.ToString()
    41 52                         }
    42 53                     };
    43 54                 }
    44 55 
    45 56             return base.GetNextOperator(id, projectId);
    46 57         }
    47 58 
    48 59     }

     例三、

        public class WF_Archive : WorkflowProcess, IWorkflowProcess
        {
        }

    例子中主要继承的方法为:GetNextWF(int projectId) ,GetNextOperator(int id , int projectId)

    例一的返回的是子类的GetNextOperator()方法和基类的 GetNextWF(),

    例二返回的是子类的GetNextOperator()和GetNextWF()

    例三返回的是基类的GetNextOperator()和GetNextWF()

  • 相关阅读:
    计算机网络中协议相关的问题(转)
    Vs2013打开项目时,一直处理等待状态,并显示“Microsoft Visual Studio正忙”的提示窗,处理方法(转)
    ASP.NET Core 2.2 十九. Action参数的映射与模型绑定(转)
    ASP.NET Core 2.2 十八.各种Filter的内部处理机制及执行顺序(转)
    ASP.NET Core 2.2 : 十七.Action的执行(Endpoint.RequestDelegate后面的故事)(转)
    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案(转)
    【Leetcode】771. Jewels and Stones
    【Leetcode】50. Pow(x, n)
    【Leetcode】 328. Odd Even Linked List
    【leetcode】59.Spiral Matrix II
  • 原文地址:https://www.cnblogs.com/longshanshan/p/6732541.html
Copyright © 2020-2023  润新知