Mercurial > pub > bltoolkit
comparison Source/Validation/ValidationContext.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
1 using System; | |
2 using System.ComponentModel; | |
3 using System.Reflection; | |
4 using BLToolkit.Mapping; | |
5 using BLToolkit.Reflection; | |
6 | |
7 namespace BLToolkit.Validation | |
8 { | |
9 public class ValidationContext | |
10 { | |
11 public delegate bool IsNullHandler(ValidationContext context); | |
12 | |
13 private object _object; | |
14 public object Object | |
15 { | |
16 get { return _object; } | |
17 set { _object = value; } | |
18 } | |
19 | |
20 private TypeAccessor _typeAccessor; | |
21 public TypeAccessor TypeAccessor | |
22 { | |
23 get | |
24 { | |
25 if (_typeAccessor == null) | |
26 _typeAccessor = TypeAccessor.GetAccessor(_object.GetType()); | |
27 | |
28 return _typeAccessor; | |
29 } | |
30 } | |
31 | |
32 private PropertyDescriptor _propertyDescriptor; | |
33 public PropertyDescriptor PropertyDescriptor | |
34 { | |
35 get { return _propertyDescriptor; } | |
36 set { _propertyDescriptor = value; } | |
37 } | |
38 | |
39 private IsNullHandler _isNull; | |
40 public IsNullHandler IsNull | |
41 { | |
42 get { return _isNull; } | |
43 set { _isNull = value; } | |
44 } | |
45 | |
46 public bool IsValueNull | |
47 { | |
48 get { return _isNull(this); } | |
49 } | |
50 | |
51 private object _value; | |
52 public object Value | |
53 { | |
54 get { return _value; } | |
55 set | |
56 { | |
57 _value = value; | |
58 _nullValue = null; | |
59 } | |
60 } | |
61 | |
62 private MemberAccessor _memberAccessor; | |
63 public MemberAccessor MemberAccessor | |
64 { | |
65 get { return _memberAccessor; } | |
66 set | |
67 { | |
68 _memberAccessor = value; | |
69 _memberInfo = value != null? value.MemberInfo: null; | |
70 } | |
71 } | |
72 | |
73 private MemberInfo _memberInfo; | |
74 public MemberInfo MemberInfo | |
75 { | |
76 get { return _memberInfo; } | |
77 } | |
78 | |
79 private object _nullValue; | |
80 public object NullValue | |
81 { | |
82 get | |
83 { | |
84 if (_nullValue == null) | |
85 { | |
86 if (_value == null) | |
87 throw new InvalidOperationException("NullValue is undefined when Value == null"); | |
88 | |
89 ObjectMapper om = Map.GetObjectMapper(Object.GetType()); | |
90 MemberMapper mm = om[MemberName, true]; | |
91 | |
92 _nullValue = | |
93 mm != null && mm.MapMemberInfo.Nullable && mm.MapMemberInfo.NullValue != null? | |
94 mm.MapMemberInfo.NullValue: | |
95 TypeAccessor.GetNullValue(Value.GetType()); | |
96 | |
97 if (_nullValue == null) | |
98 _nullValue = DBNull.Value; | |
99 } | |
100 | |
101 return _nullValue; | |
102 | |
103 } | |
104 } | |
105 | |
106 public string MemberName | |
107 { | |
108 get | |
109 { | |
110 return | |
111 _memberInfo != null? _memberInfo.Name: | |
112 #if !SILVERLIGHT | |
113 _propertyDescriptor != null? _propertyDescriptor.Name: | |
114 #endif | |
115 null; | |
116 } | |
117 } | |
118 } | |
119 } |