0
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3
|
|
4 namespace BLToolkit.Mapping
|
|
5 {
|
|
6
|
|
7 [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, Inherited = true, AllowMultiple = false)]
|
|
8 public sealed class RelationAttribute : Attribute
|
|
9 {
|
|
10 #region Constructors
|
|
11
|
|
12 public RelationAttribute()
|
|
13 {
|
|
14 }
|
|
15
|
|
16 public RelationAttribute(Type destination)
|
|
17 {
|
|
18 _destination = destination;
|
|
19 }
|
|
20
|
|
21 public RelationAttribute(string slaveIndex)
|
|
22 {
|
|
23 SlaveIndex1 = slaveIndex;
|
|
24 }
|
|
25
|
|
26 public RelationAttribute(string slaveIndex, string masterIndex)
|
|
27 : this(slaveIndex)
|
|
28 {
|
|
29 MasterIndex1 = masterIndex;
|
|
30 }
|
|
31
|
|
32 public RelationAttribute(Type destination, string slaveIndex)
|
|
33 : this(destination)
|
|
34 {
|
|
35 SlaveIndex1 = slaveIndex;
|
|
36 }
|
|
37
|
|
38 public RelationAttribute(Type destination, string slaveIndex, string masterIndex)
|
|
39 : this(destination)
|
|
40 {
|
|
41 SlaveIndex1 = slaveIndex;
|
|
42 MasterIndex1 = masterIndex;
|
|
43 }
|
|
44
|
|
45 #endregion
|
|
46
|
|
47 private Type _destination;
|
|
48 public Type Destination { get { return _destination; } }
|
|
49
|
|
50 private string _masterIndex1;
|
|
51 public string MasterIndex1 { get { return _masterIndex1; } set { _masterIndex1 = value; } }
|
|
52
|
|
53 private string _masterIndex2;
|
|
54 public string MasterIndex2 { get { return _masterIndex2; } set { _masterIndex2 = value; } }
|
|
55
|
|
56 private string _masterIndex3;
|
|
57 public string MasterIndex3 { get { return _masterIndex3; } set { _masterIndex3 = value; } }
|
|
58
|
|
59 private string _slaveIndex1;
|
|
60 public string SlaveIndex1 { get { return _slaveIndex1; } set { _slaveIndex1 = value; } }
|
|
61
|
|
62 private string _slaveIndex2;
|
|
63 public string SlaveIndex2 { get { return _slaveIndex2; } set { _slaveIndex2 = value; } }
|
|
64
|
|
65 private string _slaveIndex3;
|
|
66 public string SlaveIndex3 { get { return _slaveIndex3; } set { _slaveIndex3 = value; } }
|
|
67
|
|
68 public MapIndex MasterIndex
|
|
69 {
|
|
70 get
|
|
71 {
|
|
72 List<String> index = new List<string>();
|
|
73
|
|
74 AddIndex(index, MasterIndex1);
|
|
75 AddIndex(index, MasterIndex2);
|
|
76 AddIndex(index, MasterIndex3);
|
|
77
|
|
78 if (index.Count == 0)
|
|
79 return null;
|
|
80
|
|
81 return new MapIndex(index.ToArray());
|
|
82 }
|
|
83 }
|
|
84
|
|
85 public MapIndex SlaveIndex
|
|
86 {
|
|
87 get
|
|
88 {
|
|
89 List<String> index = new List<string>();
|
|
90
|
|
91 AddIndex(index, SlaveIndex1);
|
|
92 AddIndex(index, SlaveIndex2);
|
|
93 AddIndex(index, SlaveIndex3);
|
|
94
|
|
95 if (index.Count == 0)
|
|
96 return null;
|
|
97
|
|
98 return new MapIndex(index.ToArray());
|
|
99 }
|
|
100 }
|
|
101
|
|
102 private void AddIndex(List<string> index, string field)
|
|
103 {
|
|
104 if (!string.IsNullOrEmpty(field))
|
|
105 index.Add(field);
|
|
106 }
|
|
107 }
|
|
108 }
|