2015-12-05 81 views
1

我目前正在開發一個處理很多類型的輸入的項目,其中有一個約束如0和1之間的雙重約束。我想通過使用一個類以標準方式驗證此輸入我將調用它來驗證輸入,並且如果輸入錯誤會將結果拋出到日誌文件或拋出異常。經過驗證的驗證和錯誤檢查C#

tl; dr:是否有一個很好的方法來標準化使用日誌文件的程序的驗證。

例子:

 public void AddTimes(double time1, double time2) 
     { 
      if (time1 < 0) 
      { 
       ErrorManager.Validation_MustBeNonNegative(ErrorManager.GetName(new { time1 }), time1.ToString()); 
      } 
      else if (time2 <= 0) 
      { 
       ErrorManager.Validation_MustBeNonNegativeNonZero(ErrorManager.GetName(new { time1 }), time2.ToString()); 
      } 
     } 
+1

你需要提供代碼纔能有人真正幫助你解決問題 – Raider

回答

0

您可以使用log4net的,從您的自定義方法做了記錄。配置和記錄到log4net是一個關於SO的記錄良好的主題,因此您應該優化您的問題並重新搜索。

要驗證您的值,您需要有一種表達有效範圍的方法。微軟包括一些範圍檢查功能,在它的框架,但你可以很容易地滾你自己:

public static void AssertTimesAreValid(double time1, double time2) 
{ 
       if (time1 < 0) 
     { 
      ErrorManager.Validation_MustBeNonNegative(ErrorManager.GetName(new { time1 }), time1.ToString()); 
      throw new ArgumentException("Times are not far enough apart."); 
     } 
     else if (time2 <= 0) 
     { 
      ErrorManager.Validation_MustBeNonNegativeNonZero(ErrorManager.GetName(new { time1 }), time2.ToString()); 
      throw new ArgumentException("Times are not far enough apart."); 
     } 
} 

public void AddTimes(double time1, double time2) 
{ 
    AssertTimesAreValid(time1, time2) 

    // Do your work now 
} 

你的錯誤管理需要做了記錄。

+1

謝謝你的回答,它肯定涵蓋了問題的日誌記錄部分,儘管我也想要一個系統,我可以調用一個方法,把一個變量放入它看看它是否有效(即在0和1之間),但log4net解決了一半的問題。 –

+0

已更新,其中包含範圍檢查示例。 –