Похоже, вы сохранили результаты вызова метода перечислителя без преобразования результата в список.
Когда у вас есть такой метод:
public IEnumerable<string> GetMyWidgetNames()
{
foreach (var x in MyWidgets)
{
yield return x.Name;
}
}
Компилятор превращает это во вложенный объект с именем, подобным тому, которое вы видите (тот, с именем, которое вы никогда не сможете создать самостоятельно из-за встроенного +
)
Если вы затем сохраните ссылку на этот объект внутри чего-то, что пытаетесь сериализовать, вы получите исключение, отмеченное ОП.
«Исправление» заключается в том, чтобы ваши сериализованные объекты всегда преобразовывали любые назначения IEnumerable <> в списки. Вместо этого
public IEnumerable<string> WidgetNames { get; set; }
вам нужно написать:
public IEnumerable<string> WidgetNames
{
get { return mWidgetNames; }
set
{
if (value == null)
mWidgetNames= null
else mWidgetNames= value.ToList();
}
}
private List<string> mWidgetNames;