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、构造函数等...

那么,我是否应该在程序(主)中使用对象属性进行解析而不是解析我的方式?

编辑1:

控制台读/写已经是主要的。

4

1 回答 1

1

我的意见是在业务对象中进行。原因是您可以稍后在另一个项目中重用验证。

您还可以查看ValidationAttributes,它为您提供了一种很好且干净的方式来验证业务对象。

您还可以将FluentValidation作为另一种强大的替代方案。

于 2013-07-22T14:38:56.417 回答