java C#枚举类定义错误码

最近在写C#时需要在switch中对不同的错误码进行处理,于是想到使用枚举类型,因为是新手,所以用起来感觉很不方便。之前用java开发时,使用枚举类定义错误码及其含义非常的方便,下文给出两种语言定义错误码及在switch语句使用的代码块,希望能帮到大家:

java

// the definition of ErrorStatus
public enum ErrorStatus {
    
    
    SUCCESS(200, "Success"),
    REDUNDANT_OPERATION(201, "Redundant operation"),
    DUPLICATED(4090, "Duplicated"),
    FORMAT_ERROR(4150, "Format error");
    private int value;
    private String errorMessage;

    ErrorStatus(int value, String errorMessage) {
    
    
        this.value = value;
        this.errorMessage = errorMessage;
    }

    public int value() {
    
    
        return value;
    }

    public void setValue(int value) {
    
    
        this.value = value;
    }

    public String getErrorMessage() {
    
    
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
    
    
        this.errorMessage = errorMessage;
    }

    public static Boolean isValidateRawType(int level) {
    
    
        ErrorStatus[] value = ErrorStatus.values();
        boolean flag = false;
        for (ErrorStatus pl : value){
    
    
            if(pl.value == level){
    
    
                flag = true;
            }
        }
        return flag;
    }

    public static ErrorStatus getByValue(int value){
    
    
        for(ErrorStatus type: values()){
    
    
            if(type.value() == value){
    
    
                return type;
            }
        }
        return null;
    }
}

// the usage of ErrorStatus
switch(code){
    
    
	case ErrorStatus.SUCCESS.value():
		log.info(ErrorStatus.SUCCESS.getErrorMessage());
		break;
	case ErrorStatus.REDUNDANT_OPERATION.value():
		log.info(ErrorStatus.REDUNDANT_OPERATION.getErrorMessage());
		break;
	case ErrorStatus.DUPLICATED.value():
		log.info(ErrorStatus.DUPLICATED.getErrorMessage());
		break;
	case ErrorStatus.FORMAT_ERROR.value():
		log.info(ErrorStatus.FORMAT_ERROR.getErrorMessage());
		break;
}

C#

使用C#时,可以方便地拿到枚举的value,但很难拿到其对应的message,网上找到很多种方法基本上是定义一个静态方法加上反射的原理,然后返回一个Dictionary, 用起来真心不方便,研究了好久发现了一个包: Enums.NET 操作起来非常简单。

// The definition of ErrorStatus
 public enum ErrorStatus
    {
    
    
        [Description("Success")]
        SUCCESS = 200,

        [Description("Redundant operation")]
        REDUNDANT_OPERATION = 201,

        [Description("Duplicated")]
        DUPLICATED = 4090,

        [Description("Format error")]
        FORMAT_ERROR = 4150
   }

//The usage of ErrorStatus
switch(code){
    
    
	case (int)ErrorStatus.SUCCESS:
		 Log.Logging((ErrorStatus.SUCCESS).AsString(EnumFormat.Description));
		break;
	case (int)ErrorStatus.REDUNDANT_OPERATION:
		 Log.Logging((ErrorStatus.REDUNDANT_OPERATION).AsString(EnumFormat.Description));
		break;
	case (int)ErrorStatus.DUPLICATED:
		 Log.Logging((ErrorStatus.DUPLICATED).AsString(EnumFormat.Description));
		break;
	case (int)ErrorStatus.FORMAT_ERROR:
		 Log.Logging((ErrorStatus.FORMAT_ERROR).AsString(EnumFormat.Description));
		break;
}

看下来还是java的更简单,也午还有更好的方法,欢迎大神留言指正。

猜你喜欢

转载自blog.csdn.net/hongyinanhai00/article/details/108549624
今日推荐