public static ModuleService DeserializeService(string serviceSerialized)
{
ModuleService result = null;
//serviceSerialized = serviceSerialized.Replace("_#_#_", " ");
JavaScriptSerializer oSerializer = new JavaScriptSerializer();
Dictionary<string, Dictionary<string, string>> serviceFull = (Dictionary<string, Dictionary<string, string>>)oSerializer.Deserialize(serviceSerialized, typeof(Dictionary<string, Dictionary<string, string>>));
string serviceKey = "current";
ModuleService lastService = null;
for (int i = 0; i < serviceFull.Count; i++)
{
Dictionary<string, string> oneServiceDict = serviceFull[serviceKey];
ModuleService tempService = new ModuleService(oneServiceDict["serviceMetaData_Name"], oneServiceDict["serviceMetaData_PhysicalID"]);
tempService.InstanceId = oneServiceDict["serviceMetaData_InstanceId"];
//tempService.LogicalID = oneServiceDict["serviceMetaData_LogicalID"]; readonly
//tempService.Name = oneServiceDict["serviceMetaData_Name"]; readonly
//tempService.PhysicalID = oneServiceDict["serviceMetaData_PhysicalID"]; set in constructor
tempService.ProvisioningId = oneServiceDict["serviceMetaData_ProvisioningId"];
foreach (KeyValuePair<String, String> entry in oneServiceDict)
{
if (entry.Key.IndexOf("serviceMetaData_") < 0)
{
tempService.Properties.Add(new ModuleServiceProperty(entry.Key, entry.Value));
}
}
if (serviceKey == "current")
{
lastService = tempService;
result = lastService;
}
else
{
lastService.Parent = tempService;
lastService = lastService.Parent;
}
serviceKey = serviceKey + ".parent";
}
return result;
}