我有一个可能有很多孩子的基础班。我有一个方法需要返回与类之一相同的类型(即,类A返回类型A的对象,类B返回类型B的对象,依此类推)。有没有一种好的方法,那就是不要在每个类上都声明相同的方法(将来我可能需要一些类似的方法,并且该方法可能会有一些变化)。当前,我在基类中有一个静态的泛型方法。
public static T FromJson<T>(string json) where T : IHttpModel =>
JsonConvert.DeserializeObject<T>(json, Converter.Settings);
这是来自quicktype.io的代码,但是我可能需要更改它。
答案 0 :(得分:3)
如果我正确地理解了您的任务,则可以将基类声明为泛型,并声明将类型本身传递给泛型参数的子级(如果您没有多级层次结构):
class Base<T> where T : IHttpModel
{
public static T FromJson(string json)=> JsonConvert.DeserializeObject<T>(json, Converter.Settings);
}
class A : Base<A>, IHttpModel
{
}
A x = A.FromJson("");