.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Text.Json;
					
public class Program
{
	public static void Main()
	{
		  // Start with any class
		  var myObject = new int[] { 0, 1, 2 };

		  // Need serialization? Just wrap it
		  var serializable = myObject.AsSerializable();

		  // Serialize it
		  string serialized = serializable.Serialize();
		  Console.WriteLine(serialized);

		  // Deserialize when needed
		  var deserialized = serializable.Deserialize(serialized);
		  Console.WriteLine(string.Join(' ', deserialized));
	}
}

public interface ISerialize<T>
  {
      string Serialize();
      T Deserialize(string seralizeString);
  }

  public class SerializeWrapper<T> : ISerialize<T> where T : class
  {
      public T Value { get; private set; }

      public SerializeWrapper(T value)
      {
          Value = value; //value is the initial object T
      }

      public string Serialize()
      {
          return JsonSerializer.Serialize(Value);
      }

      public T Deserialize(string serializeString)
      {
        	return JsonSerializer.Deserialize<T>(serializeString);
      }
  }

  public static class SerializeExtensions
  {
      public static SerializeWrapper<T> AsSerializable<T>(this T obj) where T : class
      {
          return new SerializeWrapper<T>(obj); 
      }
  }
;