对方法返回结果的封装。举一个例子:一个方法对数据库进行操作,操作成功返回true,操作失败返回false,这个返回值类型用bool既可以搞定。
但是,更进一步,现在设计到用户权限的问题,操作成功返回true,操作失败返回false,没有权限返回NotPermission,为了实现这个效果,我写了一个枚举类型,其中3个值:true,false,NotPermission。
以上的情况我都可以实现。但是如果这个方法本来返回值不是bool类型,而是一个具体的string或者int或者一个类,这个就无法通过枚举来是实现了。请问这样的情况怎么实现?
谢谢!
但是,更进一步,现在设计到用户权限的问题,操作成功返回true,操作失败返回false,没有权限返回NotPermission,为了实现这个效果,我写了一个枚举类型,其中3个值:true,false,NotPermission。
以上的情况我都可以实现。但是如果这个方法本来返回值不是bool类型,而是一个具体的string或者int或者一个类,这个就无法通过枚举来是实现了。请问这样的情况怎么实现?
谢谢!
string 可以返回错误信息 或者 字符串 "0","1","2","3"
类 可以返回任何类
public enum Status { NotPermission,Permission };
public static string GetStatusName(string index)
{
return Enum.GetName(typeof(Status), int.Parse(index));
}
定义一个抽象类 RetValue 设为函数的返回值类型;
派生出各种实体返回类型.
然后得到的返回值是什么类型就是什么类型(列如可以通过is)
举个例子,一个方法不考虑权限的情况下返回类ClassResult,但是现在这个方法要考虑到权限问题,返回结果是ClassResult或者没有权限,这个用枚举肯定实现不了。(如果本来是返回bool类型的话,可以用枚举实现,enum:true,false,NotPermission)。我觉得这位前辈的方法是目前看来最好的,不知道有没有更加好的。这种方法其实应该和返回父类是一样的效果吧!
返回值为父类,得到这个返回值以后,怎么判断他到底是哪个子类呢?ClassResult和NotPermission都是object的子类吧,怎么判断这个object是ClassResult还是NotPermission呢?
具体代码是:如果没有权限,则返回NotPermission;有权限,那么返回结果ClassResult。NotPermission和ClassResult都是我写的类。public object f()
{
if(没有权限)
{
return NotPermission;
}
else
{
ClassResult = .....;
return ClassResult;
}
}object o = f();
得到这个o以后,我怎么判断这个o到底是NotPermission还是ClassResult?
{
public int ex = 0;
public string Value = null;
public Result(int ex){this.ex = ex;}
public Result(string value){this.Value = value;}
}public Result f()
{
if(没有权限)
{
return new Result(Consts.EX_NotPermission);
}
else
{
ClassResult = .....;
return new Result(ClassResult);
}
}
{
public bool IsSuccess;
public string returnCode;
public String Description;
……
}
用IS 可以判断,(object is ClassResult)ClassResult else NotPermission不过感觉你上面说的有点拖裤子放屁的感觉有必要这么麻烦