0
|
1 using System;
|
|
2
|
|
3 namespace BLToolkit.Mapping
|
|
4 {
|
|
5 [AttributeUsage(
|
|
6 AttributeTargets.Class | AttributeTargets.Interface |
|
|
7 AttributeTargets.Property | AttributeTargets.Field,
|
|
8 AllowMultiple=true)]
|
|
9 public class MemberMapperAttribute : MapImplicitAttribute
|
|
10 {
|
|
11 public MemberMapperAttribute(Type memberMapperType)
|
|
12 : this(null, memberMapperType)
|
|
13 {
|
|
14 }
|
|
15
|
|
16 public MemberMapperAttribute(Type memberType, Type memberMapperType)
|
|
17 {
|
|
18 if (memberMapperType == null) throw new ArgumentNullException("memberMapperType");
|
|
19
|
|
20 _memberType = memberType;
|
|
21 _memberMapperType = memberMapperType;
|
|
22 }
|
|
23
|
|
24 private readonly Type _memberType;
|
|
25 public Type MemberType
|
|
26 {
|
|
27 get { return _memberType; }
|
|
28 }
|
|
29
|
|
30 private readonly Type _memberMapperType;
|
|
31 public Type MemberMapperType
|
|
32 {
|
|
33 get { return _memberMapperType; }
|
|
34 }
|
|
35
|
|
36 public virtual MemberMapper MemberMapper
|
|
37 {
|
|
38 get
|
|
39 {
|
|
40 var mm = Activator.CreateInstance(_memberMapperType) as MemberMapper;
|
|
41
|
|
42 if (mm == null)
|
|
43 throw new ArgumentException(
|
|
44 string.Format("Type '{0}' is not MemberMapper.", _memberMapperType));
|
|
45
|
|
46 mm.IsExplicit = true;
|
|
47
|
|
48 return mm;
|
|
49 }
|
|
50 }
|
|
51 }
|
|
52 }
|