Обработка массивов в бизнес объектах
От: Аноним  
Дата: 26.01.06 09:28
Оценка:
Ситуэйшн следующий
Есть бизнес-объект. В него загружается что-то типа аттачмента. Т.е. он содержит поля имя и бинарные данные.
    public class AttachDataBE : CustomBE
    {
        private byte[] _data;
        private string _name = string.Empty;

        [MapField(DBConst.MAP.ReadAttachData.ATTACH_NAME)]
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }

        [MapField(DBConst.MAP.ReadAttachData.ATTACH_DATA)]
        public byte[] Buffer
        {
            get
            {
                return _data;
            }
            set
            {
                _data = value;
            }
        }
    }


Так вот, когда производится загрузка данных в этот объект при помощи метода
ExecuteObject

то данные в поле Buffer не загружаются.
Происходит это по той причине, что в классе ObjectMapper, в методе

        protected virtual bool GetIgnore(MemberAccessor memberAccessor)
        {
            MapIgnoreAttribute attr = 
                (MapIgnoreAttribute)memberAccessor.GetAttribute(typeof(MapIgnoreAttribute));

            if (attr != null)
                return attr.Ignore;

            Type type = memberAccessor.Type;

            return type.IsClass && type != typeof(string);
        }

последняя строка вернёт true, т.к. массив — это класс.
Наверное, надо включить сюда обработку массивов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.