Java和C#下的参数验证方法
程序员文章站
2024-03-13 13:45:39
参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下:
public bool register(string name, int age)
{
if...
参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下:
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 > 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 : abstractvalidator<person> { 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) { person customer = new person(null,-10); personvalidator validator = new personvalidator(); validationresult results = validator.validate(customer); bool validationsucceeded = results.isvalid; ilist<validationfailure> failures = results.errors; foreach (var failure in failures) { console.writeline(failure.errormessage); } console.readkey(); } }
fluentvalidation的使用文档:http://fluentvalidation.codeplex.com/documentation
以上就是小编为大家带来的java和c#下的参数验证方法的全部内容了,希望对大家有所帮助,多多支持~