2013-07-22 90 views
0

我正在構建一個控制檯應用程序,並且我有一個解析函數,實際上有兩個函數,它們在插入數據庫後清理用戶輸入。但在解析值之後,我將它們保存在一個對象中,然後使用對象的方法將數據保存到數據庫中。我應該使用屬性來解析控制檯輸入嗎?

以下是我有:

static int TryParse(string lable, string field) 
     { 
      string str = Console.ReadLine(); 
      string rgx; 
      string warning; 
      switch (field) 
      { 
       case "phone": 
        rgx = @"\b\d{4}-?\d{2}-?\d{2}\b"; 
        warning = @"Por favor insira apenas números (máximo de 8 dígitos) ou no seguinte formato: XXXX-XX-XX."; 
        break; 
       case "postal": 
        rgx = @"\b\d{2}-?\d{3}-?\d{3}\b"; 
        warning = @"Por favor insira apenas números (máximo de 8 dígitos) ou no seguinte formato: XX-XXX-XXX."; 
        break; 
       case "area": 
        rgx = @"\b\d{2}\b"; 
        warning = @"Por favor insira apenas números (máximo de 2 dígitos). Código de área sem o 0."; 
        break; 
       default: 
        rgx = @"\d+"; 
        warning = @"Por favor insira apenas números."; 
        break; 
      } 
      Regex regex = new Regex(rgx); 

      while (!regex.IsMatch(str)) 
      { 
       Console.WriteLine(warning); 
       Console.Write(lable); 
       str = Console.ReadLine(); 
      } 
      return Convert.ToInt32(str.Replace("-","")); 
     }//End of TryParse(); 

其他功能只是返回一個字符串,導致其對電子郵件領域。

我的班級:

public class Contact 
    { 
     public int id; 
     public string name; 
     public string skype; 
     public string main_email; 
     public string company; 

     public int main_phone; 
     public int main_phone_area; 
     public int postal_code; 

而且具有保存方法,整個CRUD,構造等..

所以,我應該代替解析我做的方式,在程序(主),使用對象屬性解析?

EDIT1:

控制檯讀取/寫入是在主了。

+0

我會將控制檯讀/寫移動到Main,並讓解析需要更多參數進行補償。如果您的輸入方法改變(例如,添加Web界面或實際的GUI),這將允許更多的可重用性。 – Cemafor

回答

1

我的意見是要在業務對象中做到這一點。原因是您可以稍後在另一個項目中重新使用驗證。

您還可以查看ValidationAttributes,它爲您提供了一種非常乾淨的方法來驗證業務對象。

你也可以看看FluentValidation作爲另一個強大的選擇。

相關問題