【发布时间】:2017-12-28 17:51:48
【问题描述】:
我已经为我的方法实现了一个通用的操作结果,它看起来像这样
public class OperResult
{
public string ErrorCode { get; private set; }
public string Message { get; private set; }
public object Data { get; private set; }
public bool Ok { get; private set; }
public string IncidentNumber { get; set; }
public static OperResult Success(Object data = null)
{
return new OperResult(data);
}
}
和使用泛型一样的运算结果
public class OperResult<T>
{
public string ErrorCode { get; private set; }
public string Message { get; private set; }
public T Data { get; private set; }
public bool Ok { get; private set; }
public string IncidentNumber { get; private set; }
public static OperResult<T> Success(T data = null)
{
return new OperResult<T>(data);
}
}
有没有什么办法可以将这两种实现结合起来,同时提供这个类的通用和非通用版本?
编辑添加更多关于类型使用的信息:
我想轻松创建返回此类型的函数,例如我希望能够创建以下函数:
OperResult MakeAction()
OperResult<int> GetCount()
如果我使用继承OperResult:OperResult<Object>,那么OperResult.Suceess() 将产生OperResult<Object>,以下将产生编译错误:
OperResult MakeAction(){
return OperResult.Suceess(); //Cannot convert OperResult<Object> to OperResult
}
【问题讨论】:
-
你认为它应该是什么样子?顺便说一句:似乎非泛型实际上是
OperResult<object>。 -
还有鼓声,为什么?
-
已经在cmets
class OperResult: OperResult<object> { }中提到了