Страница 1 из 1

Рекурсия в BussinessObject

Добавлено: 27 янв 2014, 17:02
kavit
Добрый день. Есть класс, содержащий рекурсию (ссылку на класс такого же типа, в данном примере 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();
После запуска дизайнера, нажав "Проверка отчетов" получаю ошибку "В отчете 'Report' выявлена ошибка компиляции 'ParentBusinessObject': member names cannot be the same as their enclosing type"

Предполагаю,что дело в рекурсии. Если да, какое решение вы можете предложить, чтобы избавиться от ошибки, но сохранить иерархию объектов (Parent->Parent->...)

Re: Рекурсия в BussinessObject

Добавлено: 28 янв 2014, 17:43
HighAley
Здравствуйте.

Мы в курсе данной проблемы.
В данный момент работаем над её решением.
О результатах сообщим позже.

Спасибо.

Re: Рекурсия в BussinessObject

Добавлено: 28 янв 2014, 18:48
Ivan
Здравствуйте.

Произвели доработку.
Патч будет включен в следующий билд в пятницу.

Спасибо.

Re: Рекурсия в BussinessObject

Добавлено: 28 янв 2014, 19:36
kavit
Спасибо. Будем готовы попробовать.

Есть еще один вопрос. Он связан с перебором вложенных полей, поэтому пишу в ветке про рекурсию.

Регистрируется список данных. Каждый элемент списка = объект, содержащий другие вложенные объекты.
Есть два случая 1 (рабочий) и 2 (нерабочий)
  • root-объект не содержит свойства и вложенность = 3
  • root-объект содержит свойства и вложенность = 4
Понимаю, что объяснения расплывчатые, но рабочий вариант был найден после нескольких часов поиска, поэтому не могу назвать точную разницу между рабочим и нерабочим вариантом.
Для наглядности прикрепил файлы проекта и демо (swf) как проявляется ситуация
Можете подсказать в чем проблема?

Re: Рекурсия в BussinessObject

Добавлено: 30 янв 2014, 14:00
kavit
Создал отдельную тему: http://forumru.stimulsoft.com/viewtopic.php?f=8&t=3595

Re: Рекурсия в BussinessObject

Добавлено: 30 янв 2014, 15:49
HighAley
Здравствуйте.

Мы ответим вам в соответствующей теме.

Спасибо.