有没有更好的方法(可能是使用方法)



C#
这里的orders是一个JSON对象。我有3个字符串,可能是int,我正在验证(使用扩展方法(,但我似乎在为每个变量重复相同的代码。我正在寻找一种优化它的方法,因为它似乎有些冗长。我也可以在这里消费日期或双重支票吗?

int itemNumber;
int customer;
DateTime date = DateTime.Now;
string dateFormatted = date.ToString("dd-MM-yyyy");
int itemQuantity;
double itemCost;
bool result;
int orderNum = int.Parse(orders.OrderNumber);//convert string to int
int validInt;
double validDbl;
//loop through each of the orders
foreach (var order in orders.OrderDetails)
{
string item = order.ItemNumber;
string cusNumber = order.CustomerNumber;
string orderDate = order.OrderDate;
string quantity = order.Quantity;
string cost = order.Cost;
//string field;
result = item.isNumber();
// Validate item number
validInt = validate(item);

//}
int counter = 0;
if (validInt != 0)
{
itemNumber = validInt;
counter++;
}
else
{
errMessage = $"{item} is not a valid integer value.";
errors.Add(errMessage);
}
// Validate customer number
validInt = validate(cusNumber);

if (validInt != 0)
{
customer = validInt;
counter++;
}
else
{
errMessage = $"{cusNumber} is not a valid integer value.";
errors.Add(errMessage);
}

validInt = validate(quantity);
if (validInt != 0)
{
itemQuantity = validInt;
counter++;
}
else
{
errMessage = $"{quantity} is not a valid integer value.";
errors.Add(errMessage);
}
validDbl = isDouble(cost);
if (validDbl != 0)
{
itemCost= validDbl;
counter++;
}
else
{
errMessage = $"{quantity} is not a valid integer value.";
errors.Add(errMessage);
}

}

如果计数器=JSON对象(数组(中的项目总数,那么我将使用计数器和errMessage来显示正确的订单。

更智能的验证

static bool validate(string input, out int field, ref int counter, List<string> errors){
bool ok = Int32.TryParse(input, out field);
if(ok){
counter++;
}else{
errors.Add($"{input} is not a valid integer value.");
}
return ok; // just in case we need it
}

现在

validate(item, out itemNumber, ref counter, errors);
validate(cusNumber, out customer, ref counter, errors);
validate(quantity, out itemQuantity, ref counter, errors);
.....

或者,您可以验证成员函数,并将计数器和错误作为成员变量,在这种情况下,它们不需要作为args 传递

最新更新