[英]Make parent method return type matching its derivated class type
我有一个这样的父类:
public class WebserviceResultPerNode
{
public List<DBMappingResult> mapTable { get; set; }
public static WebserviceResultPerNode newInstanceFromError(ErrorResponse error)
{
return new WebserviceResultPerNode
{
mapTable = null,
responseCode = error.responseCode,
responseMessage = error.responseMessage
};
}
}
它有一些派生类,如下所示:
public class WebserviceInsertResultPerNode : WebserviceResultPerNode
{
}
现在我想创建像WebserviceInsertResultPerNode
这样的派生类,这样当我调用WebserviceInsertResultPerNode.newInstanceFromError()
它们的返回类型与派生类相同,而不是父类。 当前newInstanceFromError
返回类型是父类的类型,即WebserviceResultPerNode
。 我想知道有什么方法可以覆盖WebserviceInsertResultPerNode.newInstanceFromError
使其返回类型为WebserviceInsertResultPerNode
但我不需要初始化父类的字段而无需重写它们。
我怎样才能重写我的代码来实现这个目标?
您可以通过使用反射简单地实现这一点,提供子类将始终具有无参数构造函数:
public class WebserviceResultPerNode<T> where T : WebserviceResultPerNode<T>, new()
{
public static T NewInstanceFromError(ErrorResponse error)
{
return new T() { … };
};
}
然后后代类将如下所示:
public class MyWebServiceResult : WebserviceResultPerNode<MyWebServiceResult> { … }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.