string GenerateWriteListContent (string container, TypeData listType, ListMap map, string ob, bool writeToString)
{
string targetString = null;
if (writeToString)
{
targetString = GetStrTempVar ();
WriteLine ("System.Text.StringBuilder " + targetString + " = new System.Text.StringBuilder();");
}
if (listType.Type.IsArray)
{
string itemVar = GetNumTempVar ();
WriteLineInd ("for (int "+itemVar+" = 0; "+itemVar+" < " + ob + ".Length; "+itemVar+"++) {");
GenerateListLoop (container, map, ob + "["+itemVar+"]", itemVar, listType.ListItemTypeData, targetString);
WriteLineUni ("}");
}
else if (typeof(ICollection).IsAssignableFrom (listType.Type))
{
string itemVar = GetNumTempVar ();
WriteLineInd ("for (int "+itemVar+" = 0; "+itemVar+" < " + ob + ".Count; "+itemVar+"++) {");
GenerateListLoop (container, map, ob + "["+itemVar+"]", itemVar, listType.ListItemTypeData, targetString);
WriteLineUni ("}");
}
else if (typeof(IEnumerable).IsAssignableFrom (listType.Type))
{
string itemVar = GetObTempVar ();
WriteLineInd ("foreach (" + listType.ListItemTypeData.CSharpFullName + " " + itemVar + " in " + ob + ") {");
GenerateListLoop (container, map, itemVar, null, listType.ListItemTypeData, targetString);
WriteLineUni ("}");
}
else
throw new Exception ("Unsupported collection type");
return targetString;
}