关于继承

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

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

 

下面是基类。

 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()

 

posted @ 2017-04-19 11:29  .Alive  阅读(209)  评论(0编辑  收藏  举报