Business Logic Toolkit for .NET
www.bltoolkit.net
|  Home   |  Download   |  Documentation   |  Discussions   |  License   |

  Source.Mapping.MemberMapperAttribute.cs

 
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;
            }
        }
    }
}
 
© 2010 www.bltoolkit.net
support@bltoolkit.net