I'd do something like this (caution - untested code):
public class a : List<b>
{
public bool AddInsertObject(int index, c cItem, bool createB)
{
bool success = false;
if (index >= 0 && (index < this.Count)
{
this[index].Add(cItem);
success = true;
}
else
{
if (createB)
{
b bList = new b();
bList.Add(cItem);
this.Add(bList);
}
}
return success;
}
}
public class b : List<c>
{
}
public class c
{
}
Useage:
a.AddInsertObject(int index, new c(){init properties});