C# 多個類中的函數返回值枚舉類型不一樣,怎樣整合到一起? -开发者知识库

C# 多個類中的函數返回值枚舉類型不一樣,怎樣整合到一起? -开发者知识库,第1张

A:由於要引用不同廠商提供的底層類,且底層的函數返回值枚舉類型定義不一樣;

     publice enum CmdRtn1
    {
        CmdOK=1//指令執行成功
        CmdErr=2//失敗
        CmdParmErr=7//參數錯誤
    }

     publice enum CmdRtn2
    {
        CmdOK=0//指令執行成功
        CmdErr=1//失敗
        CmdParmErr=3//參數錯誤
    }


B:由於要判斷函數的返回值狀態及記錄程序運行日志,現定義一個信息類Msg

  public class  Msg
    {
        public string Step { get; set; }
        public string Message { get; set; }
        public string FuncName{get;set;}
    }

 public class  Cmd1Msg:Msg
    {
         public Cmd1Msg(string step,string message,string funcName, CmdRtn1 rtn)
         {
               Step=step;
               Message=message;
               FuncName=funcName;
                CmdRtn=rtn;
         }
         public CmdRtn1 CmdRtn{ get; set; }
    }

 public class  Cmd2Msg:Msg
    {
          public Cmd2Msg(string step,string message,string funcName, CmdRtn2 rtn)
         {
               Step=step;
               Message=message;
               FuncName=funcName;
               CmdRtn2=rtn;
         }
        public CmdRtn2 rtn{ get; set; }
    }


C:先依據不同的函數返回值來調用不同的構造函數來初始化子類對象;且讀取寫入相關日志信息時也得類似操作;
Msg cmd1Msg=new Cmd1Msg("11","22","FuncName",CmdRtn1.CmdOK)
Msg cmd2Msg=new Cmd2Msg("11","22","FuncName",CmdRtn2.CmdParmErr)


D:現感覺上面方法有些繁瑣,想將上面兩個枚舉類型整合為一個;不知各位有什么好的方法沒?謝謝。

17 个解决方案

#1


如果整合,工作量應該比較大吧。
在各MSG的子類中進行信息輸出。
可以在MSG中定義一個虛方法,子類實現。
可以參考工廠模式的思想
父類定義,子類實現即可。

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复