Java和C#下的参数验证方法

网友投稿 202 2023-07-05


Java和C#下的参数验证方法

参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下:

public bool Register(string name, int age)

{

if (string.IsNullOrEmpty(name))

{

throw new ArgumentException("name should not be empty", "name");

}

if (age < 10 || age > 70)

{

throw new ArgumentException("the age must between 10 and 70","age");

}

//...

}

这样做当需求变动的时候,要改动的代码相应的也比较多,这样比较麻烦,最近接触到了java和C#下2种方便的参数验证方法,简单的介绍下。

Java参数验证:

采用google的guava下的一个辅助类:

import com.google.common.base.Preconditions;

示例代码:

public static void checkPersonInfo(int age, String name){

Preconditions.checkNotNull(name, "name为null");

Preconditions.checkArgument(name.length() > 0, "name的长度要大于0");

Preconditions.checkArgument(age &gWxpwvPQYTIt; 0, "age必须大于0");

System.out.println("a person age: " + age + ", name: " + name);

}

public static void getPostCode(String code){

Preconditions.checkArgument(checkPostCode(code),"邮政编码不符合要求");

System.out.println(code);

}

public static void main(String[] args) {

try {

checkPersonInfo(10,"fdsfsd");

checkPersonInfo(10,null);

checkPersonInfo(-10,"fdsfsd");

getPostCode("012234");

} catch (Exception e) {

e.printStackTrace();

}

}

当参数不满足要求的时候,抛出异常信息,异常中携带的信息为后面自定义的字符串,这样写就方便多了。

C#参数验证:

采用FluentValidation这个类库,参考地址在下面。

使用方法:

一个简单的Person类:

public class Person

{

public string Name { set; get; }

public int Age { set; get; }

public Person(string name, int age)

{

Name = name;

Age = age;

}

}

Person的验证类:

public class PersonValidator : AbstractValidatorhttp://

{

public PersonValidator()

{

RuleFor(x => x.Name).NotEmpty().WithMessage("姓名不能为空");

RuleFor(x => x.Name).Length(1,50).WithMessage("姓名字符不能超过50");

RuleFor(x => x.Age).GreaterThan(0).WithMessage("年龄必须要大于0");

}

private bool ValidName(string name)

{

// custom name validating logic goes here

return true;

}

}

使用:

class Program

{

static void Main(string[] args)

{

Phttp://erson customer = new Person(null,-10);

PersonValidator validator = new PersonValidator();

ValidationResult results = validator.Validate(customer);

bool validationSucceeded = results.IsValid;

IList failures = results.Errors;

foreach (var failure in failures)

{

Console.WriteLine(failure.ErrorMessage);

}

Console.ReadKey();

}

}

FluentValidation的使用文档:http://fluentvalidation.codeplex.com/documentation


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:在java中实现C#语法里的按引用传递参数的方法
下一篇:Java与C++实现相同的MD5加密算法简单实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~