返回相同对象类型作为输入的通用方法

时间:2019-12-10 20:41:06

标签: c# generics

我想知道是否可以创建一个C#方法,该方法接受任何类型的对象,并返回该对象的实例化版本,例如:

public static T GetObjectFromJToken<T>(JToken jToken, string jTokenTag) where T : new ()
{
    if (jToken[tag] != null && jToken[tag].ToString() != "")
    {
        return new T(JToken.Parse(jToken[tag].ToString()));
    }
    return new T();
}

然后可以像下面这样使用该方法:

MyObject myObject = GetObjectFromJToken<MyObject>(jToken, "someJsonTag");

这可能吗?

感谢进阶!

1 个答案:

答案 0 :(得分:1)

您可以使用JToken.ToObject这样的通用方法:

public static T GetObjectFromJToken<T>(JToken jToken, string jTokenTag) where T : class, new()
{
    return jToken[jTokenTag]?.ToObject<T>() ?? new T();
}