Nix*_*Nix 4 c# generics .net-3.5
有没有办法在下面做?想象一下通用的结果包装类.您有类型和关联错误列表的位置.当没有结果返回给用户时,我们将使用布尔值来表示成功失败.我想创建一个构造函数中的错误列表,如果该列表为空或计数0,和类型是布尔/布尔我想将它设置为true ....
看似简单,但令人惊讶的是不可能.
public class Result<T>{
private T valueObject { get;set;}
private List<Error> errors{ get;set;}
public Result(T valueObj, List<Error> errorList){
this.valueObject = valueObj;
this.errors = errorList;
}
public Result(List<Error> errors)
{
this.valueObject = default(ReturnType);
if (valueObject is Boolean)
{
//Wont work compile
//(valueObject as Boolean) = ((errors == null) || errors.Count == 0);
//Compiles but detaches reference
//bool temp = ((bool)(valueObject as object)) ;
//temp = ((errors == null) || errors.Count == 0);
}
this.errors = errors;
}
}
Run Code Online (Sandbox Code Playgroud)
}
我错过了一些简单的事吗?总的来说,我更愿意在没有反思的情况下这样做.
在转换为通用T之前将其强制转换为对象,应该可以正常工作:
if (valueObject is Boolean)
{
this.valueObject = (T)(object)((errors == null) || errors.Count == 0);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4342 次 |
最近记录: |