using System; namespace BLToolkit.Mapping { [AttributeUsage( AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Property | AttributeTargets.Field, AllowMultiple=true)] public class MemberMapperAttribute : MapImplicitAttribute { public MemberMapperAttribute(Type memberMapperType) : this(null, memberMapperType) { } public MemberMapperAttribute(Type memberType, Type memberMapperType) { if (memberMapperType == null) throw new ArgumentNullException("memberMapperType"); _memberType = memberType; _memberMapperType = memberMapperType; } private readonly Type _memberType; public Type MemberType { get { return _memberType; } } private readonly Type _memberMapperType; public Type MemberMapperType { get { return _memberMapperType; } } public virtual MemberMapper MemberMapper { get { MemberMapper mm = Activator.CreateInstance(_memberMapperType) as MemberMapper; if (mm == null) throw new ArgumentException( string.Format("Type '{0}' is not MemberMapper.", _memberMapperType)); return mm; } } } }