I am making a class to abstract some functionality that I will be using in multiple other classes in my project. This class converts objects to and from JSON and also deep copies objects.
[Serializable]
public abstract class Serializable
{
public T Copy<T>()
{
return Deserialize<T>(Serialize());
}
public string Serialize()
{
return JsonConvert.SerializeObject(this);
}
public static T Deserialize<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
}
This code works as intended; however, I would like to simplify the syntax of the Copy
and Desirialize
functions. Currently, a call looks like this copy = descendantClassInstance.Copy<descendantClass>()
which is wordy and also leaves room for error in that copy = otherdescendantClassInstance.Copy<descendantClass>()
would compile but yield an error at runtime. I would prefer the return type be automatically inferred based on the type of the calling object, like copy = descendantClassInstance.Copy()
, without overriding the Copy
or Desirialize
method in each descendant class.
How can I do this?
Aucun commentaire:
Enregistrer un commentaire