private static void ParseComplexData(object o, ZXPProxy zpp, string s, List<DIndices> ld, ref int li)
{
// Check For Data Availability
if(li + 1 >= ld.Count || ld[li].Length < 1 || ld[li + 1].Type != DelimitType.Curly)
return;
// Check If A Key Is Available
string key = GetKeyString(s, ld, li);
if(string.IsNullOrWhiteSpace(key))
return;
// Get Substrings
DIndices diType = ld[li], diData = ld[li + 1];
li++;
// Find The Field That Matches To This Key
ZXPDatum datum = null;
if(!zpp.DataDict.TryGetValue(key, out datum)) return;
// Check For A Possible Conversion
if(datum.Converter != null) {
// Try To Convert
object val = null;
string sValue = s.Substring(ld[li].Start, ld[li].Length);
if(ReadValue(sValue, datum.Converter, out val))
datum.SetValue(o, val);
return;
}
else {
// Get The Special Type
string sType = s.Substring(diType.Start, diType.Length);
if(string.IsNullOrWhiteSpace(sType)) return;
Type cType = GetTypeFromString(sType);
if(cType == null) return;
// Create And Set The Data
object val = null;
string sValue = s.Substring(diData.Start, diData.Length);
if(ReadValue(sValue, datum.Converter, cType, out val))
datum.SetValue(o, val);
}
}