using Newtonsoft.Json.Linq;
using System.Collections.Generic;
public static void Main()
var s1 = new WorkloadManifestJson<MyScenario1>
Scenarios = new MyScenario1
MyS1StringProperty = "value1",
var s2 = new WorkloadManifestJson<MyScenario2>
Scenarios = new MyScenario2
MyS2StringProperty = "value1",
var s3 = new WorkloadManifestJson<PropertyBagScenario>
Scenarios = new PropertyBagScenario
Properties = new Dictionary<string, object>
{ "Propery1", "mystring" },
var s1serialized = JsonConvert.SerializeObject(s1);
var s2serialized = JsonConvert.SerializeObject(s2);
var s3serialized = JsonConvert.SerializeObject(s3);
var s1rehydrated = JsonConvert.DeserializeObject<WorkloadManifestJson<MyScenario1>>(s1serialized);
var s2rehydrated = JsonConvert.DeserializeObject<WorkloadManifestJson<MyScenario2>>(s2serialized);
var s3rehydrated = JsonConvert.DeserializeObject<WorkloadManifestJson<PropertyBagScenario>>(s3serialized);
public class WorkloadManifestJson<T>
public string Workload {get;set;}
public T Scenarios {get;set;}
public string MyS1StringProperty {get;set;}
public int MyS1IntProperty {get;set;}
public string MyS2StringProperty {get;set;}
public int MyS2IntProperty {get;set;}
public class PropertyBagScenario
public Dictionary<string, object> Properties {get;set;}