Рекурсия в BussinessObject
Добавлено: 27 янв 2014, 17:02
Добрый день. Есть класс, содержащий рекурсию (ссылку на класс такого же типа, в данном примере Parent)
Создается список объектов для подключения к отчету следующим образом:
Отчет заполняется данными и вызывается в дизайнере
После запуска дизайнера, нажав "Проверка отчетов" получаю ошибку "В отчете 'Report' выявлена ошибка компиляции 'ParentBusinessObject': member names cannot be the same as their enclosing type"
Предполагаю,что дело в рекурсии. Если да, какое решение вы можете предложить, чтобы избавиться от ошибки, но сохранить иерархию объектов (Parent->Parent->...)
Код: Выделить всё
[Description("Базовый класс B")]
internal class ClassB
{
#region Properties
[Description("Ссылка на родителя")]
public ClassB Parent { get; set; }
[Description("Идентификатор объекта")]
public int Id { get; set; }
[Description("Описание объекта")]
public string Desc { get; set; }
[Description("Список")]
public List<string> List { get; set; }
[Description("Guid")]
public Guid GuidValue { get; set; }
[Description("TimeSpan")]
public TimeSpan TimeSpanValue { get; set; }
[Description("Object")]
public Object ObjectValue { get; set; }
[Description("Char")]
public Char CharValue { get; set; }
[Description("Byte[]")]
public Byte[] ByteArrayValue { get; set; }
#endregion
}
Код: Выделить всё
var list = new List<ClassB>
{
new ClassB()
{
Id = 3,
Parent = new ClassB()
},
new ClassB()
{
Id = 4,
Parent = new ClassB()
},
new ClassB()
{
Id = 5,
Parent = new ClassB()
}
};
Код: Выделить всё
report.RegBusinessObject("Item", list);
report.Dictionary.SynchronizeBusinessObjects(3); // Уровень максимальной вложенности = 3 (!)
report.Design();
Предполагаю,что дело в рекурсии. Если да, какое решение вы можете предложить, чтобы избавиться от ошибки, но сохранить иерархию объектов (Parent->Parent->...)