annotate Source/Reflection/MemberAccessor.cs @ 1:8f65451dc28f

Исправлена проблема с фабрикой и выборкой нескольких объектов в linq выражении
author cin
date Fri, 28 Mar 2014 01:04:56 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Linq.Expressions;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 #if !SILVERLIGHT && !DATA
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using BLToolkit.ComponentModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 namespace BLToolkit.Reflection
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public abstract class MemberAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 protected MemberAccessor(TypeAccessor typeAccessor, MemberInfo memberInfo)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 TypeAccessor = typeAccessor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 MemberInfo = memberInfo;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 #region Public Properties
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 public MemberInfo MemberInfo { get; private set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 public TypeAccessor TypeAccessor { get; private set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 #if !SILVERLIGHT && !DATA
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 private PropertyDescriptor _propertyDescriptor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public PropertyDescriptor PropertyDescriptor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 if (_propertyDescriptor == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 _propertyDescriptor = new MemberPropertyDescriptor(TypeAccessor.OriginalType, Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 return _propertyDescriptor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public virtual bool HasGetter { get { return false; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public virtual bool HasSetter { get { return false; } }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 public Type Type
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 return MemberInfo is PropertyInfo?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 ((PropertyInfo)MemberInfo).PropertyType:
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 ((FieldInfo) MemberInfo).FieldType;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public string Name
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 get { return MemberInfo.Name; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 private Type _underlyingType;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 public Type UnderlyingType
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 get { return _underlyingType ?? (_underlyingType = TypeHelper.GetUnderlyingType(Type)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 #region Public Methods
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 public bool IsDefined<T>() where T : Attribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 return MemberInfo.IsDefined(typeof(T), true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 [Obsolete("Use generic version instead")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 public Attribute GetAttribute(Type attributeType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 var attrs = MemberInfo.GetCustomAttributes(attributeType, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 return attrs.Length > 0? (Attribute)attrs[0]: null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 public T GetAttribute<T>() where T : Attribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 var attrs = MemberInfo.GetCustomAttributes(typeof(T), true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 return attrs.Length > 0? (T)attrs[0]: null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 [Obsolete("Use generic version instead")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public object[] GetAttributes(Type attributeType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 var attrs = MemberInfo.GetCustomAttributes(attributeType, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 return attrs.Length > 0? attrs: null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 public T[] GetAttributes<T>() where T : Attribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 Array attrs = MemberInfo.GetCustomAttributes(typeof(T), true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 return attrs.Length > 0? (T[])attrs: null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 public object[] GetAttributes()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 var attrs = MemberInfo.GetCustomAttributes(true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 return attrs.Length > 0? attrs: null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 public object[] GetTypeAttributes(Type attributeType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 return TypeHelper.GetAttributes(TypeAccessor.OriginalType, attributeType);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 #region Set/Get Value
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 public virtual Boolean IsNull(object o)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 static object GetDefaultValue<T>()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 return default(T);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 object _defaultValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 public virtual object GetValue(object o)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 if (_defaultValue == null && Type.IsValueType && !TypeHelper.IsNullableType(Type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 var mi = ReflectionHelper.Expressor<object>.MethodExpressor(_ => GetDefaultValue<int>());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 _defaultValue =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 Expression.Lambda<Func<object>>(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 Expression.Call(mi.GetGenericMethodDefinition().MakeGenericMethod(Type)))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 .Compile()();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 return _defaultValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 public virtual void SetValue(object o, object value)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 public virtual void CloneValue(object source, object dest)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 var value = GetValue(source);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 SetValue(dest, value is ICloneable? ((ICloneable)value).Clone(): value);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 // Simple types getters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 public virtual SByte GetSByte (object o) { return (SByte) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 public virtual Int16 GetInt16 (object o) { return (Int16) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 public virtual Int32 GetInt32 (object o) { return (Int32) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 public virtual Int64 GetInt64 (object o) { return (Int64) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 public virtual Byte GetByte (object o) { return (Byte) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 public virtual UInt16 GetUInt16 (object o) { return (UInt16) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 public virtual UInt32 GetUInt32 (object o) { return (UInt32) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 public virtual UInt64 GetUInt64 (object o) { return (UInt64) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 public virtual Boolean GetBoolean (object o) { return (Boolean) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 public virtual Char GetChar (object o) { return (Char) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 public virtual Single GetSingle (object o) { return (Single) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 public virtual Double GetDouble (object o) { return (Double) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 public virtual Decimal GetDecimal (object o) { return (Decimal) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 public virtual Guid GetGuid (object o) { return (Guid) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 public virtual DateTime GetDateTime(object o) { return (DateTime)GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 public virtual TimeSpan GetTimeSpan(object o) { return (TimeSpan)GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 public virtual DateTimeOffset GetDateTimeOffset(object o) { return (DateTimeOffset)GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 // Nullable types getters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 public virtual SByte? GetNullableSByte (object o) { return (SByte?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 public virtual Int16? GetNullableInt16 (object o) { return (Int16?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 public virtual Int32? GetNullableInt32 (object o) { return (Int32?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 public virtual Int64? GetNullableInt64 (object o) { return (Int64?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 public virtual Byte? GetNullableByte (object o) { return (Byte?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 public virtual UInt16? GetNullableUInt16 (object o) { return (UInt16?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 public virtual UInt32? GetNullableUInt32 (object o) { return (UInt32?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 public virtual UInt64? GetNullableUInt64 (object o) { return (UInt64?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 public virtual Boolean? GetNullableBoolean (object o) { return (Boolean?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 public virtual Char? GetNullableChar (object o) { return (Char?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 public virtual Single? GetNullableSingle (object o) { return (Single?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 public virtual Double? GetNullableDouble (object o) { return (Double?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 public virtual Decimal? GetNullableDecimal (object o) { return (Decimal?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 public virtual Guid? GetNullableGuid (object o) { return (Guid?) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 public virtual DateTime? GetNullableDateTime(object o) { return (DateTime?)GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 public virtual TimeSpan? GetNullableTimeSpan(object o) { return (TimeSpan?)GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 public virtual DateTimeOffset? GetNullableDateTimeOffset(object o) { return (DateTimeOffset?)GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 // SQL type getters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 public virtual SqlByte GetSqlByte (object o) { return (SqlByte) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 public virtual SqlInt16 GetSqlInt16 (object o) { return (SqlInt16) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 public virtual SqlInt32 GetSqlInt32 (object o) { return (SqlInt32) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 public virtual SqlInt64 GetSqlInt64 (object o) { return (SqlInt64) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 public virtual SqlSingle GetSqlSingle (object o) { return (SqlSingle) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 public virtual SqlBoolean GetSqlBoolean (object o) { return (SqlBoolean) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 public virtual SqlDouble GetSqlDouble (object o) { return (SqlDouble) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 public virtual SqlDateTime GetSqlDateTime(object o) { return (SqlDateTime)GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 public virtual SqlDecimal GetSqlDecimal (object o) { return (SqlDecimal) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 public virtual SqlMoney GetSqlMoney (object o) { return (SqlMoney) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 public virtual SqlGuid GetSqlGuid (object o) { return (SqlGuid) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 public virtual SqlString GetSqlString (object o) { return (SqlString) GetValue(o); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 // Simple type setters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 public virtual void SetSByte (object o, SByte value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 public virtual void SetInt16 (object o, Int16 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 public virtual void SetInt32 (object o, Int32 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 public virtual void SetInt64 (object o, Int64 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 public virtual void SetByte (object o, Byte value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 public virtual void SetUInt16 (object o, UInt16 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 public virtual void SetUInt32 (object o, UInt32 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 public virtual void SetUInt64 (object o, UInt64 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 public virtual void SetBoolean (object o, Boolean value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 public virtual void SetChar (object o, Char value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 public virtual void SetSingle (object o, Single value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 public virtual void SetDouble (object o, Double value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252 public virtual void SetDecimal (object o, Decimal value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 public virtual void SetGuid (object o, Guid value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 public virtual void SetDateTime(object o, DateTime value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 public virtual void SetTimeSpan(object o, TimeSpan value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 public virtual void SetDateTimeOffset(object o, DateTimeOffset value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 // Simple type setters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 public virtual void SetNullableSByte (object o, SByte? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 public virtual void SetNullableInt16 (object o, Int16? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 public virtual void SetNullableInt32 (object o, Int32? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 public virtual void SetNullableInt64 (object o, Int64? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 public virtual void SetNullableByte (object o, Byte? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 public virtual void SetNullableUInt16 (object o, UInt16? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 public virtual void SetNullableUInt32 (object o, UInt32? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 public virtual void SetNullableUInt64 (object o, UInt64? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 public virtual void SetNullableBoolean (object o, Boolean? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 public virtual void SetNullableChar (object o, Char? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 public virtual void SetNullableSingle (object o, Single? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 public virtual void SetNullableDouble (object o, Double? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 public virtual void SetNullableDecimal (object o, Decimal? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 public virtual void SetNullableGuid (object o, Guid? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 public virtual void SetNullableDateTime(object o, DateTime? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 public virtual void SetNullableTimeSpan(object o, TimeSpan? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 public virtual void SetNullableDateTimeOffset(object o, DateTimeOffset? value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 // SQL type setters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 public virtual void SetSqlByte (object o, SqlByte value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 public virtual void SetSqlInt16 (object o, SqlInt16 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 public virtual void SetSqlInt32 (object o, SqlInt32 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 public virtual void SetSqlInt64 (object o, SqlInt64 value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 public virtual void SetSqlSingle (object o, SqlSingle value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 public virtual void SetSqlBoolean (object o, SqlBoolean value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 public virtual void SetSqlDouble (object o, SqlDouble value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 public virtual void SetSqlDateTime(object o, SqlDateTime value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 public virtual void SetSqlDecimal (object o, SqlDecimal value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 public virtual void SetSqlMoney (object o, SqlMoney value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 public virtual void SetSqlGuid (object o, SqlGuid value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 public virtual void SetSqlString (object o, SqlString value) { SetValue(o, value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 }