我有一个类,DataPacket,它看起来像这样
public class DataPacket
{
public DataPacket()
{
}
public string ToJson()
{
return JsonConvert.SerializeObject(this);
}
}
我有一个特定的数据包,名为SessionDataPacket,它继承自这个DataPacket类:
public class SessionDataPacket : DataPacket
{
public string SessionId { get; set; }
public string UserId { get; set; }
public SessionDataPacket(string sessionId, string userId)
{
this.SessionId = sessionId;
this.UserId = userId;
}
}
我想添加一个名为FromJson的函数,该函数创建正确类的对象.我想出了一个泛型函数,如下所示:
public static T FromJson<T>(string json) where T : DataPacket
{
return JsonConvert.DeserializeObject<T>(json);
}
这是DataPacket中的一个函数,可用于指定我想要创建的DataPacket的类型.然而,这将不得不这样命名:
SessionDataPacket sessionData = DataPacket.FromJson<SessionDataPacket>(responseData);
我的问题是:有没有一种方法可以调用这个函数,而不必在泛型方法中指定它的类型,这样我就可以这样使用它:
SessionDataPacket sessionData = SessionDataPacket.FromJson(responseData);