欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-12 18:09:26
参数的输入和验证问题是开发时经常遇到的,一般的验证方法如下: 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#下的参数验证方法的全部内容了,希望对大家有所帮助,多多支持~