Извеняюсь что в сразу столько вопросов связанных с 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'а.
Это так и задумывалось?