MemberMapperAttribute неудобства использования с классом
От: Sashko Россия http://www.dc.baika.ru/
Дата: 24.01.06 10:52
Оценка: 42 (1)
Извеняюсь что в сразу столько вопросов связанных с BLT. Может проблема в том что я пытаюсь использовать её не так как планировани (и для чего писали) разработчики.

Суть дела. Описываю бизнес объект.

    public abstract class PropertyType
    {
        [NonUpdatable]
        public abstract uint Id { get; set; }

        public abstract Guid Guid { get; set; }
        public abstract string Name { get; set; }
        public abstract string Description { get; set; }
        public abstract uint ValueTypeId { get; set; }

        public abstract bool IsImmutable { get; set; }
        public abstract bool IsReadOnly { get; set; }
    }

так же определил два member mapper'а

    public class GuidMapper : MemberMapper { /*...*/ }
    public class BooleanMapper : MemberMapper { /*...*/ }

теперь хочу что б у моего объекта поля типа bool и Guid оботоражались посредством мой определённых mapper'ов. Если описывать это так

    public abstract class PropertyType
    {
        // ...
        [MemberMapper(typeof(GuidMapper)]
        public abstract Guid Guid { get; set; }
        // ...
        [MemberMapper(typeof(BooleanMapper))]
        public abstract bool IsImmutable { get; set; }
        [MemberMapper(typeof(BooleanMapper))]
        public abstract bool IsReadOnly { get; set; }
    }

то все впорядке. Если же описать это вот так

    [MemberMapper(typeof(Guid), typeof(GuidMapper)]
    [MemberMapper(typeof(bool), typeof(BooleanMapper))]
    public abstract class PropertyType
    {
        // ...
        public abstract Guid Guid { get; set; }
        // ...
        public abstract bool IsImmutable { get; set; }
        public abstract bool IsReadOnly { get; set; }
    }

возникает проблема. Со свойствами IsImmutable и IsReadOnly будет связан один и тот же экземпляр BooleanMapper'а, так как MemberMapperAttribute.MemberMapper возращает один и тот же экземпляр member mapper'а созданного в конструкторе MemberMapperAttribute'а.

Это так и задумывалось?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.