首页 > 解决方案 > 在c#中返回与类相同类型的对象?

问题描述

我有一个可能有很多孩子的基础班。我有一个方法需要返回与类中的一个相同的类型(即 A 类返回 A 类型的对象,B 类返回 B 类型的对象,等等)。有没有一种好方法不是在每个类上声明相同的方法(我将来可能需要一些类似的方法,这个方法可能会有一些变化)。目前,我在基类中有一个静态泛型方法。

public static T FromJson<T>(string json) where T : IHttpModel =>
        JsonConvert.DeserializeObject<T>(json, Converter.Settings);

这是来自 quicktype.io 的代码,但我可能需要更改它。

标签: c#

解决方案


如果我正确理解了您的任务,您可以将基类声明为泛型并声明子类(如果您没有多级层次结构)将类型本身传递给泛型参数:

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("");

推荐阅读