comparison Source/Common/Convert.generated.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 //---------------------------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by BLToolkit template for T4.
4 // Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
5 // </auto-generated>
6 //---------------------------------------------------------------------------------------------------
7 using System;
8 using System.Data.Linq;
9 using System.Data.SqlTypes;
10 using System.Globalization;
11 using System.IO;
12 using System.Xml;
13 #if !SILVERLIGHT
14 using System.Xml.Linq;
15 #endif
16
17 namespace BLToolkit.Common
18 {
19 using Properties;
20
21 public partial class Convert
22 {
23 #region Simple Types
24
25 #region Boolean
26
27 // Simple Types
28 //
29 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Boolean</c> value.</summary>
30 public static Boolean ToBoolean(Byte p) { return p != 0; }
31 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Boolean</c> value.</summary>
32 public static Boolean ToBoolean(Decimal p) { return p != 0; }
33 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Boolean</c> value.</summary>
34 public static Boolean ToBoolean(Double p) { return p != 0; }
35 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Boolean</c> value.</summary>
36 public static Boolean ToBoolean(Int16 p) { return p != 0; }
37 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Boolean</c> value.</summary>
38 public static Boolean ToBoolean(Int32 p) { return p != 0; }
39 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Boolean</c> value.</summary>
40 public static Boolean ToBoolean(Int64 p) { return p != 0; }
41 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Boolean</c> value.</summary>
42 [CLSCompliant(false)]
43 public static Boolean ToBoolean(SByte p) { return p != 0; }
44 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Boolean</c> value.</summary>
45 public static Boolean ToBoolean(Single p) { return p != 0; }
46 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Boolean</c> value.</summary>
47 public static Boolean ToBoolean(String p) { return p == null? Configuration.NullableValues.Boolean : p.Length == 1 ? ToBoolean(p[0]) : Boolean.Parse(p); }
48 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Boolean</c> value.</summary>
49 [CLSCompliant(false)]
50 public static Boolean ToBoolean(UInt16 p) { return p != 0; }
51 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Boolean</c> value.</summary>
52 [CLSCompliant(false)]
53 public static Boolean ToBoolean(UInt32 p) { return p != 0; }
54 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Boolean</c> value.</summary>
55 [CLSCompliant(false)]
56 public static Boolean ToBoolean(UInt64 p) { return p != 0; }
57
58 // Nullable Types
59 //
60 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Boolean</c> value.</summary>
61 public static Boolean ToBoolean(Boolean? p) { return p.HasValue && p.Value; }
62 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Boolean</c> value.</summary>
63 public static Boolean ToBoolean(Byte? p) { return p.HasValue && p.Value != 0; }
64 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Boolean</c> value.</summary>
65 public static Boolean ToBoolean(Char? p) { return p.HasValue && ToBoolean(p.Value); }
66 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Boolean</c> value.</summary>
67 public static Boolean ToBoolean(Decimal? p) { return p.HasValue && p.Value != 0; }
68 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Boolean</c> value.</summary>
69 public static Boolean ToBoolean(Double? p) { return p.HasValue && p.Value != 0; }
70 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Boolean</c> value.</summary>
71 public static Boolean ToBoolean(Int16? p) { return p.HasValue && p.Value != 0; }
72 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Boolean</c> value.</summary>
73 public static Boolean ToBoolean(Int32? p) { return p.HasValue && p.Value != 0; }
74 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Boolean</c> value.</summary>
75 public static Boolean ToBoolean(Int64? p) { return p.HasValue && p.Value != 0; }
76 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Boolean</c> value.</summary>
77 [CLSCompliant(false)]
78 public static Boolean ToBoolean(SByte? p) { return p.HasValue && p.Value != 0; }
79 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Boolean</c> value.</summary>
80 public static Boolean ToBoolean(Single? p) { return p.HasValue && p.Value != 0; }
81 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Boolean</c> value.</summary>
82 [CLSCompliant(false)]
83 public static Boolean ToBoolean(UInt16? p) { return p.HasValue && p.Value != 0; }
84 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Boolean</c> value.</summary>
85 [CLSCompliant(false)]
86 public static Boolean ToBoolean(UInt32? p) { return p.HasValue && p.Value != 0; }
87 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Boolean</c> value.</summary>
88 [CLSCompliant(false)]
89 public static Boolean ToBoolean(UInt64? p) { return p.HasValue && p.Value != 0; }
90
91 // Other Types
92 //
93 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Boolean</c> value.</summary>
94 public static Boolean ToBoolean(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Boolean : BitConverter.ToBoolean(p.ToArray(), 0); }
95 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Boolean</c> value.</summary>
96 public static Boolean ToBoolean(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Boolean : BitConverter.ToBoolean(p, 0); }
97
98 #if !SILVERLIGHT
99
100 // Sql Types
101 //
102 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Boolean</c> value.</summary>
103 public static Boolean ToBoolean(SqlBoolean p) { return !p.IsNull && p.Value; }
104 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Boolean</c> value.</summary>
105 public static Boolean ToBoolean(SqlByte p) { return !p.IsNull && ToBoolean(p.Value); }
106 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Boolean</c> value.</summary>
107 public static Boolean ToBoolean(SqlDecimal p) { return !p.IsNull && ToBoolean(p.Value); }
108 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Boolean</c> value.</summary>
109 public static Boolean ToBoolean(SqlDouble p) { return !p.IsNull && ToBoolean(p.Value); }
110 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Boolean</c> value.</summary>
111 public static Boolean ToBoolean(SqlInt16 p) { return !p.IsNull && ToBoolean(p.Value); }
112 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Boolean</c> value.</summary>
113 public static Boolean ToBoolean(SqlInt32 p) { return !p.IsNull && ToBoolean(p.Value); }
114 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Boolean</c> value.</summary>
115 public static Boolean ToBoolean(SqlInt64 p) { return !p.IsNull && ToBoolean(p.Value); }
116 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Boolean</c> value.</summary>
117 public static Boolean ToBoolean(SqlMoney p) { return !p.IsNull && ToBoolean(p.Value); }
118 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Boolean</c> value.</summary>
119 public static Boolean ToBoolean(SqlSingle p) { return !p.IsNull && ToBoolean(p.Value); }
120 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Boolean</c> value.</summary>
121 public static Boolean ToBoolean(SqlString p) { return !p.IsNull && ToBoolean(p.Value); }
122
123 #endif
124
125 // From Object
126 //
127 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Boolean</c> value.</summary>
128 public static Boolean ToBoolean(object p)
129 {
130 if (p == null) return Configuration.NullableValues.Boolean;
131
132 var type = p.GetType();
133
134 // Primitive types
135 //
136 switch (Type.GetTypeCode(type))
137 {
138 case TypeCode.DBNull : return Configuration.NullableValues.Boolean;
139 case TypeCode.Boolean : return (Boolean)p;
140 case TypeCode.Char : return ToBoolean((Char) p);
141 case TypeCode.String : return ToBoolean((String) p);
142 case TypeCode.SByte : return ToBoolean((SByte) p);
143 case TypeCode.Int16 : return ToBoolean((Int16) p);
144 case TypeCode.Int32 : return ToBoolean((Int32) p);
145 case TypeCode.Int64 : return ToBoolean((Int64) p);
146 case TypeCode.Byte : return ToBoolean((Byte) p);
147 case TypeCode.UInt16 : return ToBoolean((UInt16) p);
148 case TypeCode.UInt32 : return ToBoolean((UInt32) p);
149 case TypeCode.UInt64 : return ToBoolean((UInt64) p);
150 case TypeCode.Single : return ToBoolean((Single) p);
151 case TypeCode.Double : return ToBoolean((Double) p);
152 case TypeCode.Decimal : return ToBoolean((Decimal)p);
153 }
154
155 // Nullable Types
156 //
157 if (type.IsGenericType)
158 {
159 if (p is Boolean?) return ToBoolean((Boolean?) p);
160 if (p is Byte?) return ToBoolean((Byte?) p);
161 if (p is Char?) return ToBoolean((Char?) p);
162 if (p is Decimal?) return ToBoolean((Decimal?) p);
163 if (p is Double?) return ToBoolean((Double?) p);
164 if (p is Int16?) return ToBoolean((Int16?) p);
165 if (p is Int32?) return ToBoolean((Int32?) p);
166 if (p is Int64?) return ToBoolean((Int64?) p);
167 if (p is SByte?) return ToBoolean((SByte?) p);
168 if (p is Single?) return ToBoolean((Single?) p);
169 if (p is UInt16?) return ToBoolean((UInt16?) p);
170 if (p is UInt32?) return ToBoolean((UInt32?) p);
171 if (p is UInt64?) return ToBoolean((UInt64?) p);
172 }
173
174 // Other Types
175 //
176 if (p is Binary) return ToBoolean((Binary) p);
177 if (p is Byte[]) return ToBoolean((Byte[]) p);
178
179 #if !SILVERLIGHT
180
181 // Sql Types
182 //
183 if (p is INullable)
184 {
185 if (p is SqlBoolean) return ToBoolean((SqlBoolean)p);
186 if (p is SqlByte) return ToBoolean((SqlByte) p);
187 if (p is SqlDecimal) return ToBoolean((SqlDecimal)p);
188 if (p is SqlDouble) return ToBoolean((SqlDouble) p);
189 if (p is SqlInt16) return ToBoolean((SqlInt16) p);
190 if (p is SqlInt32) return ToBoolean((SqlInt32) p);
191 if (p is SqlInt64) return ToBoolean((SqlInt64) p);
192 if (p is SqlMoney) return ToBoolean((SqlMoney) p);
193 if (p is SqlSingle) return ToBoolean((SqlSingle) p);
194 if (p is SqlString) return ToBoolean((SqlString) p);
195 }
196
197 #endif
198
199 if (p is IConvertible) return ((IConvertible)p).ToBoolean(null);
200
201 throw CreateInvalidCastException(p.GetType(), typeof(Boolean));
202 }
203
204 #endregion
205
206 #region Byte
207
208 // Simple Types
209 //
210 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Byte</c> value.</summary>
211 public static Byte ToByte(Boolean p) { return p ? (Byte)1 : (Byte)0; }
212 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Byte</c> value.</summary>
213 public static Byte ToByte(Char p) { return checked((Byte)p); }
214 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Byte</c> value.</summary>
215 public static Byte ToByte(Decimal p) { return checked((Byte)p); }
216 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Byte</c> value.</summary>
217 public static Byte ToByte(Double p) { return checked((Byte)p); }
218 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Byte</c> value.</summary>
219 public static Byte ToByte(Int16 p) { return checked((Byte)p); }
220 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Byte</c> value.</summary>
221 public static Byte ToByte(Int32 p) { return checked((Byte)p); }
222 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Byte</c> value.</summary>
223 public static Byte ToByte(Int64 p) { return checked((Byte)p); }
224 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Byte</c> value.</summary>
225 [CLSCompliant(false)]
226 public static Byte ToByte(SByte p) { return checked((Byte)p); }
227 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Byte</c> value.</summary>
228 public static Byte ToByte(Single p) { return checked((Byte)p); }
229 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Byte</c> value.</summary>
230 public static Byte ToByte(String p) { return p == null? Configuration.NullableValues.Byte : Byte.Parse(p); }
231 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Byte</c> value.</summary>
232 [CLSCompliant(false)]
233 public static Byte ToByte(UInt16 p) { return checked((Byte)p); }
234 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Byte</c> value.</summary>
235 [CLSCompliant(false)]
236 public static Byte ToByte(UInt32 p) { return checked((Byte)p); }
237 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Byte</c> value.</summary>
238 [CLSCompliant(false)]
239 public static Byte ToByte(UInt64 p) { return checked((Byte)p); }
240
241 // Nullable Types
242 //
243 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Byte</c> value.</summary>
244 public static Byte ToByte(Boolean? p) { return p.HasValue && p.Value ? (Byte)1: (Byte)0; }
245 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Byte</c> value.</summary>
246 public static Byte ToByte(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Byte; }
247 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Byte</c> value.</summary>
248 public static Byte ToByte(Char? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
249 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Byte</c> value.</summary>
250 public static Byte ToByte(Decimal? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
251 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Byte</c> value.</summary>
252 public static Byte ToByte(Double? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
253 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Byte</c> value.</summary>
254 public static Byte ToByte(Int16? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
255 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Byte</c> value.</summary>
256 public static Byte ToByte(Int32? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
257 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Byte</c> value.</summary>
258 public static Byte ToByte(Int64? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
259 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Byte</c> value.</summary>
260 [CLSCompliant(false)]
261 public static Byte ToByte(SByte? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
262 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Byte</c> value.</summary>
263 public static Byte ToByte(Single? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
264 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Byte</c> value.</summary>
265 [CLSCompliant(false)]
266 public static Byte ToByte(UInt16? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
267 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Byte</c> value.</summary>
268 [CLSCompliant(false)]
269 public static Byte ToByte(UInt32? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
270 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Byte</c> value.</summary>
271 [CLSCompliant(false)]
272 public static Byte ToByte(UInt64? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
273
274 // Other Types
275 //
276 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Byte</c> value.</summary>
277 public static Byte ToByte(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Byte : p.ToArray()[0]; }
278 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Byte</c> value.</summary>
279 public static Byte ToByte(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Byte : p[0]; }
280
281 #if !SILVERLIGHT
282
283 // Sql Types
284 //
285 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Byte</c> value.</summary>
286 public static Byte ToByte(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
287 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Byte</c> value.</summary>
288 public static Byte ToByte(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Byte : p.Value; }
289 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Byte</c> value.</summary>
290 public static Byte ToByte(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
291 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Byte</c> value.</summary>
292 public static Byte ToByte(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
293 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Byte</c> value.</summary>
294 public static Byte ToByte(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
295 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Byte</c> value.</summary>
296 public static Byte ToByte(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
297 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Byte</c> value.</summary>
298 public static Byte ToByte(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
299 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Byte</c> value.</summary>
300 public static Byte ToByte(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
301 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Byte</c> value.</summary>
302 public static Byte ToByte(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
303 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Byte</c> value.</summary>
304 public static Byte ToByte(SqlString p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
305
306 #endif
307
308 // From Object
309 //
310 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Byte</c> value.</summary>
311 public static Byte ToByte(object p)
312 {
313 if (p == null) return Configuration.NullableValues.Byte;
314
315 var type = p.GetType();
316
317 // Primitive types
318 //
319 switch (Type.GetTypeCode(type))
320 {
321 case TypeCode.DBNull : return Configuration.NullableValues.Byte;
322 case TypeCode.Byte : return (Byte)p;
323 case TypeCode.SByte : return ToByte((SByte) p);
324 case TypeCode.Int16 : return ToByte((Int16) p);
325 case TypeCode.Int32 : return ToByte((Int32) p);
326 case TypeCode.Int64 : return ToByte((Int64) p);
327 case TypeCode.UInt16 : return ToByte((UInt16) p);
328 case TypeCode.UInt32 : return ToByte((UInt32) p);
329 case TypeCode.UInt64 : return ToByte((UInt64) p);
330 case TypeCode.Single : return ToByte((Single) p);
331 case TypeCode.Double : return ToByte((Double) p);
332 case TypeCode.Decimal : return ToByte((Decimal)p);
333 case TypeCode.Char : return ToByte((Char) p);
334 case TypeCode.String : return ToByte((String) p);
335 case TypeCode.Boolean : return ToByte((Boolean)p);
336 }
337
338 // Nullable Types
339 //
340 if (type.IsGenericType)
341 {
342 if (p is Boolean?) return ToByte((Boolean?) p);
343 if (p is Byte?) return ToByte((Byte?) p);
344 if (p is Char?) return ToByte((Char?) p);
345 if (p is Decimal?) return ToByte((Decimal?) p);
346 if (p is Double?) return ToByte((Double?) p);
347 if (p is Int16?) return ToByte((Int16?) p);
348 if (p is Int32?) return ToByte((Int32?) p);
349 if (p is Int64?) return ToByte((Int64?) p);
350 if (p is SByte?) return ToByte((SByte?) p);
351 if (p is Single?) return ToByte((Single?) p);
352 if (p is UInt16?) return ToByte((UInt16?) p);
353 if (p is UInt32?) return ToByte((UInt32?) p);
354 if (p is UInt64?) return ToByte((UInt64?) p);
355 }
356
357 // Other Types
358 //
359 if (p is Binary) return ToByte((Binary) p);
360 if (p is Byte[]) return ToByte((Byte[]) p);
361
362 #if !SILVERLIGHT
363
364 // Sql Types
365 //
366 if (p is INullable)
367 {
368 if (p is SqlBoolean) return ToByte((SqlBoolean)p);
369 if (p is SqlByte) return ToByte((SqlByte) p);
370 if (p is SqlDecimal) return ToByte((SqlDecimal)p);
371 if (p is SqlDouble) return ToByte((SqlDouble) p);
372 if (p is SqlInt16) return ToByte((SqlInt16) p);
373 if (p is SqlInt32) return ToByte((SqlInt32) p);
374 if (p is SqlInt64) return ToByte((SqlInt64) p);
375 if (p is SqlMoney) return ToByte((SqlMoney) p);
376 if (p is SqlSingle) return ToByte((SqlSingle) p);
377 if (p is SqlString) return ToByte((SqlString) p);
378 }
379
380 #endif
381
382 if (p is IConvertible) return ((IConvertible)p).ToByte(null);
383
384 throw CreateInvalidCastException(p.GetType(), typeof(Byte));
385 }
386
387 #endregion
388
389 #region Char
390
391 // Simple Types
392 //
393 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Char</c> value.</summary>
394 public static Char ToChar(Boolean p) { return p ? (Char)1 : (Char)0; }
395 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Char</c> value.</summary>
396 public static Char ToChar(Byte p) { return checked((Char)p); }
397 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Char</c> value.</summary>
398 public static Char ToChar(Decimal p) { return checked((Char)p); }
399 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Char</c> value.</summary>
400 public static Char ToChar(Double p) { return checked((Char)p); }
401 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Char</c> value.</summary>
402 public static Char ToChar(Int16 p) { return checked((Char)p); }
403 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Char</c> value.</summary>
404 public static Char ToChar(Int32 p) { return checked((Char)p); }
405 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Char</c> value.</summary>
406 public static Char ToChar(Int64 p) { return checked((Char)p); }
407 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Char</c> value.</summary>
408 [CLSCompliant(false)]
409 public static Char ToChar(SByte p) { return checked((Char)p); }
410 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Char</c> value.</summary>
411 public static Char ToChar(Single p) { return checked((Char)p); }
412 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Char</c> value.</summary>
413 public static Char ToChar(String p) { return string.IsNullOrEmpty(p)? (Char)0 : p[0]; }
414 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Char</c> value.</summary>
415 [CLSCompliant(false)]
416 public static Char ToChar(UInt16 p) { return checked((Char)p); }
417 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Char</c> value.</summary>
418 [CLSCompliant(false)]
419 public static Char ToChar(UInt32 p) { return checked((Char)p); }
420 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Char</c> value.</summary>
421 [CLSCompliant(false)]
422 public static Char ToChar(UInt64 p) { return checked((Char)p); }
423
424 // Nullable Types
425 //
426 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Char</c> value.</summary>
427 public static Char ToChar(Boolean? p) { return p.HasValue && p.Value ? (Char)1: (Char)0; }
428 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Char</c> value.</summary>
429 public static Char ToChar(Byte? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
430 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Char</c> value.</summary>
431 public static Char ToChar(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Char; }
432 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Char</c> value.</summary>
433 public static Char ToChar(Decimal? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
434 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Char</c> value.</summary>
435 public static Char ToChar(Double? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
436 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Char</c> value.</summary>
437 public static Char ToChar(Int16? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
438 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Char</c> value.</summary>
439 public static Char ToChar(Int32? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
440 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Char</c> value.</summary>
441 public static Char ToChar(Int64? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
442 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Char</c> value.</summary>
443 [CLSCompliant(false)]
444 public static Char ToChar(SByte? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
445 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Char</c> value.</summary>
446 public static Char ToChar(Single? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
447 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Char</c> value.</summary>
448 [CLSCompliant(false)]
449 public static Char ToChar(UInt16? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
450 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Char</c> value.</summary>
451 [CLSCompliant(false)]
452 public static Char ToChar(UInt32? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
453 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Char</c> value.</summary>
454 [CLSCompliant(false)]
455 public static Char ToChar(UInt64? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
456
457 // Other Types
458 //
459 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Char</c> value.</summary>
460 public static Char ToChar(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Char : BitConverter.ToChar(p.ToArray(), 0); }
461 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Char</c> value.</summary>
462 public static Char ToChar(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Char : BitConverter.ToChar(p, 0); }
463
464 #if !SILVERLIGHT
465
466 // Sql Types
467 //
468 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Char</c> value.</summary>
469 public static Char ToChar(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
470 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Char</c> value.</summary>
471 public static Char ToChar(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
472 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Char</c> value.</summary>
473 public static Char ToChar(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
474 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Char</c> value.</summary>
475 public static Char ToChar(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
476 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Char</c> value.</summary>
477 public static Char ToChar(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
478 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Char</c> value.</summary>
479 public static Char ToChar(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
480 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Char</c> value.</summary>
481 public static Char ToChar(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
482 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Char</c> value.</summary>
483 public static Char ToChar(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
484 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Char</c> value.</summary>
485 public static Char ToChar(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
486 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Char</c> value.</summary>
487 public static Char ToChar(SqlString p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
488
489 #endif
490
491 // From Object
492 //
493 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Char</c> value.</summary>
494 public static Char ToChar(object p)
495 {
496 if (p == null) return Configuration.NullableValues.Char;
497
498 var type = p.GetType();
499
500 // Primitive types
501 //
502 switch (Type.GetTypeCode(type))
503 {
504 case TypeCode.DBNull : return Configuration.NullableValues.Char;
505 case TypeCode.Char : return (Char)p;
506 case TypeCode.SByte : return ToChar((SByte) p);
507 case TypeCode.Int16 : return ToChar((Int16) p);
508 case TypeCode.Int32 : return ToChar((Int32) p);
509 case TypeCode.Int64 : return ToChar((Int64) p);
510 case TypeCode.Byte : return ToChar((Byte) p);
511 case TypeCode.UInt16 : return ToChar((UInt16) p);
512 case TypeCode.UInt32 : return ToChar((UInt32) p);
513 case TypeCode.UInt64 : return ToChar((UInt64) p);
514 case TypeCode.Single : return ToChar((Single) p);
515 case TypeCode.Double : return ToChar((Double) p);
516 case TypeCode.Decimal : return ToChar((Decimal)p);
517 case TypeCode.String : return ToChar((String) p);
518 case TypeCode.Boolean : return ToChar((Boolean)p);
519 }
520
521 // Nullable Types
522 //
523 if (type.IsGenericType)
524 {
525 if (p is Boolean?) return ToChar((Boolean?) p);
526 if (p is Byte?) return ToChar((Byte?) p);
527 if (p is Char?) return ToChar((Char?) p);
528 if (p is Decimal?) return ToChar((Decimal?) p);
529 if (p is Double?) return ToChar((Double?) p);
530 if (p is Int16?) return ToChar((Int16?) p);
531 if (p is Int32?) return ToChar((Int32?) p);
532 if (p is Int64?) return ToChar((Int64?) p);
533 if (p is SByte?) return ToChar((SByte?) p);
534 if (p is Single?) return ToChar((Single?) p);
535 if (p is UInt16?) return ToChar((UInt16?) p);
536 if (p is UInt32?) return ToChar((UInt32?) p);
537 if (p is UInt64?) return ToChar((UInt64?) p);
538 }
539
540 // Other Types
541 //
542 if (p is Binary) return ToChar((Binary) p);
543 if (p is Byte[]) return ToChar((Byte[]) p);
544
545 #if !SILVERLIGHT
546
547 // Sql Types
548 //
549 if (p is INullable)
550 {
551 if (p is SqlBoolean) return ToChar((SqlBoolean)p);
552 if (p is SqlByte) return ToChar((SqlByte) p);
553 if (p is SqlDecimal) return ToChar((SqlDecimal)p);
554 if (p is SqlDouble) return ToChar((SqlDouble) p);
555 if (p is SqlInt16) return ToChar((SqlInt16) p);
556 if (p is SqlInt32) return ToChar((SqlInt32) p);
557 if (p is SqlInt64) return ToChar((SqlInt64) p);
558 if (p is SqlMoney) return ToChar((SqlMoney) p);
559 if (p is SqlSingle) return ToChar((SqlSingle) p);
560 if (p is SqlString) return ToChar((SqlString) p);
561 }
562
563 #endif
564
565 if (p is IConvertible) return ((IConvertible)p).ToChar(null);
566
567 throw CreateInvalidCastException(p.GetType(), typeof(Char));
568 }
569
570 #endregion
571
572 #region DateTime
573
574 // Simple Types
575 //
576 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>DateTime</c> value.</summary>
577 public static DateTime ToDateTime(DateTimeOffset p) { return p.LocalDateTime; }
578 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTime</c> value.</summary>
579 public static DateTime ToDateTime(Double p) { return DateTime.MinValue + TimeSpan.FromDays (p); }
580 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTime</c> value.</summary>
581 public static DateTime ToDateTime(Int64 p) { return DateTime.MinValue + TimeSpan.FromTicks(p); }
582 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTime</c> value.</summary>
583 public static DateTime ToDateTime(String p) { return p == null ? Configuration.NullableValues.DateTime : DateTime.Parse(p, null, DateTimeStyles.NoCurrentDateDefault); }
584 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTime</c> value.</summary>
585 public static DateTime ToDateTime(TimeSpan p) { return DateTime.MinValue + p; }
586
587 // Nullable Types
588 //
589 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>DateTime</c> value.</summary>
590 public static DateTime ToDateTime(DateTime? p) { return p.HasValue ? p.Value : Configuration.NullableValues.DateTime; }
591 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>DateTime</c> value.</summary>
592 public static DateTime ToDateTime(DateTimeOffset? p) { return p.HasValue ? p.Value.LocalDateTime : Configuration.NullableValues.DateTime; }
593 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTime</c> value.</summary>
594 public static DateTime ToDateTime(Double? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromDays (p.Value): Configuration.NullableValues.DateTime; }
595 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTime</c> value.</summary>
596 public static DateTime ToDateTime(Int64? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromTicks(p.Value): Configuration.NullableValues.DateTime; }
597 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTime</c> value.</summary>
598 public static DateTime ToDateTime(TimeSpan? p) { return p.HasValue ? DateTime.MinValue + p.Value : Configuration.NullableValues.DateTime; }
599
600 // Other Types
601 //
602 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTime</c> value.</summary>
603 public static DateTime ToDateTime(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.DateTime : DateTime.FromBinary(ToInt64(p.ToArray())); }
604 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTime</c> value.</summary>
605 public static DateTime ToDateTime(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.DateTime : DateTime.FromBinary(ToInt64(p)); }
606
607 #if !SILVERLIGHT
608
609 // Sql Types
610 //
611 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTime</c> value.</summary>
612 public static DateTime ToDateTime(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.DateTime : p.Value; }
613 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTime</c> value.</summary>
614 public static DateTime ToDateTime(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.DateTime : DateTime.MinValue + TimeSpan.FromDays (p.Value); }
615 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTime</c> value.</summary>
616 public static DateTime ToDateTime(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.DateTime : DateTime.MinValue + TimeSpan.FromTicks(p.Value); }
617 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTime</c> value.</summary>
618 public static DateTime ToDateTime(SqlString p) { return p.IsNull ? Configuration.NullableValues.DateTime : ToDateTime(p.Value); }
619
620 #endif
621
622 // From Object
623 //
624 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTime</c> value.</summary>
625 public static DateTime ToDateTime(object p)
626 {
627 if (p == null) return Configuration.NullableValues.DateTime;
628
629 var type = p.GetType();
630
631 // Primitive types
632 //
633 switch (Type.GetTypeCode(type))
634 {
635 case TypeCode.DBNull : return Configuration.NullableValues.DateTime;
636 case TypeCode.DateTime : return (DateTime)p;
637 case TypeCode.String : return ToDateTime((String) p);
638 case TypeCode.Int64 : return ToDateTime((Int64) p);
639 case TypeCode.Double : return ToDateTime((Double) p);
640 }
641
642 // Simple Types
643 //
644 if (p is DateTimeOffset) return ToDateTime((DateTimeOffset) p);
645 if (p is TimeSpan) return ToDateTime((TimeSpan) p);
646
647 // Nullable Types
648 //
649 if (type.IsGenericType)
650 {
651 if (p is DateTime?) return ToDateTime((DateTime?) p);
652 if (p is DateTimeOffset?) return ToDateTime((DateTimeOffset?)p);
653 if (p is Double?) return ToDateTime((Double?) p);
654 if (p is Int64?) return ToDateTime((Int64?) p);
655 if (p is TimeSpan?) return ToDateTime((TimeSpan?) p);
656 }
657
658 // Other Types
659 //
660 if (p is Binary) return ToDateTime((Binary) p);
661 if (p is Byte[]) return ToDateTime((Byte[]) p);
662
663 #if !SILVERLIGHT
664
665 // Sql Types
666 //
667 if (p is INullable)
668 {
669 if (p is SqlDateTime) return ToDateTime((SqlDateTime) p);
670 if (p is SqlDouble) return ToDateTime((SqlDouble) p);
671 if (p is SqlInt64) return ToDateTime((SqlInt64) p);
672 if (p is SqlString) return ToDateTime((SqlString) p);
673 }
674
675 #endif
676
677 if (p is IConvertible) return ((IConvertible)p).ToDateTime(null);
678
679 throw CreateInvalidCastException(p.GetType(), typeof(DateTime));
680 }
681
682 #endregion
683
684 #region DateTimeOffset
685
686 // Simple Types
687 //
688 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
689 public static DateTimeOffset ToDateTimeOffset(DateTime p) { return p; }
690 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
691 public static DateTimeOffset ToDateTimeOffset(Double p) { return DateTimeOffset.MinValue + TimeSpan.FromDays (p); }
692 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
693 public static DateTimeOffset ToDateTimeOffset(Int64 p) { return DateTimeOffset.MinValue + TimeSpan.FromTicks(p); }
694 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
695 public static DateTimeOffset ToDateTimeOffset(String p) { return p == null? DateTimeOffset.MinValue : DateTimeOffset.Parse(p); }
696 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
697 public static DateTimeOffset ToDateTimeOffset(TimeSpan p) { return DateTimeOffset.MinValue + p; }
698
699 // Nullable Types
700 //
701 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
702 public static DateTimeOffset ToDateTimeOffset(DateTime? p) { return p.HasValue ? p.Value : DateTimeOffset.MinValue; }
703 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
704 public static DateTimeOffset ToDateTimeOffset(DateTimeOffset? p) { return p.HasValue ? p.Value : DateTimeOffset.MinValue; }
705 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
706 public static DateTimeOffset ToDateTimeOffset(Double? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value): DateTimeOffset.MinValue; }
707 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
708 public static DateTimeOffset ToDateTimeOffset(Int64? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value): DateTimeOffset.MinValue; }
709 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
710 public static DateTimeOffset ToDateTimeOffset(TimeSpan? p) { return p.HasValue ? DateTimeOffset.MinValue + p.Value : DateTimeOffset.MinValue; }
711
712 // Other Types
713 //
714 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
715 public static DateTimeOffset ToDateTimeOffset(Binary p) { return p == null || p.Length == 0 ? DateTimeOffset.MinValue : new DateTimeOffset(ToDateTime(p.ToArray())); }
716 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
717 public static DateTimeOffset ToDateTimeOffset(Byte[] p) { return p == null || p.Length == 0 ? DateTimeOffset.MinValue : new DateTimeOffset(ToDateTime(p)); }
718
719 #if !SILVERLIGHT
720
721 // Sql Types
722 //
723 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
724 public static DateTimeOffset ToDateTimeOffset(SqlDateTime p) { return p.IsNull ? DateTimeOffset.MinValue : p.Value; }
725 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
726 public static DateTimeOffset ToDateTimeOffset(SqlDouble p) { return p.IsNull ? DateTimeOffset.MinValue : DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value); }
727 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
728 public static DateTimeOffset ToDateTimeOffset(SqlInt64 p) { return p.IsNull ? DateTimeOffset.MinValue : DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value); }
729 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
730 public static DateTimeOffset ToDateTimeOffset(SqlString p) { return p.IsNull ? DateTimeOffset.MinValue : ToDateTimeOffset(p.Value); }
731
732 #endif
733
734 // From Object
735 //
736 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
737 public static DateTimeOffset ToDateTimeOffset(object p)
738 {
739 if (p == null) return DateTimeOffset.MinValue;
740
741 if (p is DateTimeOffset) return (DateTimeOffset)p;
742
743 var type = p.GetType();
744
745 // Primitive types
746 //
747 switch (Type.GetTypeCode(type))
748 {
749 case TypeCode.DBNull : return DateTimeOffset.MinValue;
750 case TypeCode.Int64 : return ToDateTimeOffset((Int64) p);
751 case TypeCode.Double : return ToDateTimeOffset((Double) p);
752 case TypeCode.DateTime : return ToDateTimeOffset((DateTime) p);
753 case TypeCode.String : return ToDateTimeOffset((String) p);
754 }
755
756 // Simple Types
757 //
758 if (p is TimeSpan) return ToDateTimeOffset((TimeSpan) p);
759
760 // Nullable Types
761 //
762 if (type.IsGenericType)
763 {
764 if (p is DateTime?) return ToDateTimeOffset((DateTime?) p);
765 if (p is DateTimeOffset?) return ToDateTimeOffset((DateTimeOffset?)p);
766 if (p is Double?) return ToDateTimeOffset((Double?) p);
767 if (p is Int64?) return ToDateTimeOffset((Int64?) p);
768 if (p is TimeSpan?) return ToDateTimeOffset((TimeSpan?) p);
769 }
770
771 // Other Types
772 //
773 if (p is Binary) return ToDateTimeOffset((Binary) p);
774 if (p is Byte[]) return ToDateTimeOffset((Byte[]) p);
775
776 #if !SILVERLIGHT
777
778 // Sql Types
779 //
780 if (p is INullable)
781 {
782 if (p is SqlDateTime) return ToDateTimeOffset((SqlDateTime) p);
783 if (p is SqlDouble) return ToDateTimeOffset((SqlDouble) p);
784 if (p is SqlInt64) return ToDateTimeOffset((SqlInt64) p);
785 if (p is SqlString) return ToDateTimeOffset((SqlString) p);
786 }
787
788 #endif
789
790 throw CreateInvalidCastException(p.GetType(), typeof(DateTimeOffset));
791 }
792
793 #endregion
794
795 #region Decimal
796
797 // Simple Types
798 //
799 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Decimal</c> value.</summary>
800 public static Decimal ToDecimal(Boolean p) { return p ? (Decimal)1 : (Decimal)0; }
801 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Decimal</c> value.</summary>
802 public static Decimal ToDecimal(Byte p) { return p; }
803 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Decimal</c> value.</summary>
804 public static Decimal ToDecimal(Char p) { return p; }
805 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Decimal</c> value.</summary>
806 public static Decimal ToDecimal(Double p) { return checked((Decimal)p); }
807 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Decimal</c> value.</summary>
808 public static Decimal ToDecimal(Int16 p) { return p; }
809 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Decimal</c> value.</summary>
810 public static Decimal ToDecimal(Int32 p) { return p; }
811 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Decimal</c> value.</summary>
812 public static Decimal ToDecimal(Int64 p) { return p; }
813 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Decimal</c> value.</summary>
814 [CLSCompliant(false)]
815 public static Decimal ToDecimal(SByte p) { return p; }
816 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Decimal</c> value.</summary>
817 public static Decimal ToDecimal(Single p) { return checked((Decimal)p); }
818 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Decimal</c> value.</summary>
819 public static Decimal ToDecimal(String p) { return p == null? Configuration.NullableValues.Decimal : Decimal.Parse(p); }
820 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Decimal</c> value.</summary>
821 [CLSCompliant(false)]
822 public static Decimal ToDecimal(UInt16 p) { return p; }
823 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Decimal</c> value.</summary>
824 [CLSCompliant(false)]
825 public static Decimal ToDecimal(UInt32 p) { return p; }
826 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Decimal</c> value.</summary>
827 [CLSCompliant(false)]
828 public static Decimal ToDecimal(UInt64 p) { return p; }
829
830 // Nullable Types
831 //
832 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Decimal</c> value.</summary>
833 public static Decimal ToDecimal(Boolean? p) { return p.HasValue && p.Value ? (Decimal)1: (Decimal)0; }
834 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Decimal</c> value.</summary>
835 public static Decimal ToDecimal(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
836 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Decimal</c> value.</summary>
837 public static Decimal ToDecimal(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
838 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Decimal</c> value.</summary>
839 public static Decimal ToDecimal(Decimal? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
840 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Decimal</c> value.</summary>
841 public static Decimal ToDecimal(Double? p) { return p.HasValue ? checked((Decimal)p.Value) : Configuration.NullableValues.Decimal; }
842 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Decimal</c> value.</summary>
843 public static Decimal ToDecimal(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
844 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Decimal</c> value.</summary>
845 public static Decimal ToDecimal(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
846 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Decimal</c> value.</summary>
847 public static Decimal ToDecimal(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
848 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Decimal</c> value.</summary>
849 [CLSCompliant(false)]
850 public static Decimal ToDecimal(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
851 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Decimal</c> value.</summary>
852 public static Decimal ToDecimal(Single? p) { return p.HasValue ? checked((Decimal)p.Value) : Configuration.NullableValues.Decimal; }
853 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Decimal</c> value.</summary>
854 [CLSCompliant(false)]
855 public static Decimal ToDecimal(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
856 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Decimal</c> value.</summary>
857 [CLSCompliant(false)]
858 public static Decimal ToDecimal(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
859 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Decimal</c> value.</summary>
860 [CLSCompliant(false)]
861 public static Decimal ToDecimal(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
862
863 #if !SILVERLIGHT
864
865 // Sql Types
866 //
867 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Decimal</c> value.</summary>
868 public static Decimal ToDecimal(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
869 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Decimal</c> value.</summary>
870 public static Decimal ToDecimal(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
871 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Decimal</c> value.</summary>
872 public static Decimal ToDecimal(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
873 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Decimal</c> value.</summary>
874 public static Decimal ToDecimal(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
875 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Decimal</c> value.</summary>
876 public static Decimal ToDecimal(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
877 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Decimal</c> value.</summary>
878 public static Decimal ToDecimal(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
879 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Decimal</c> value.</summary>
880 public static Decimal ToDecimal(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
881 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Decimal</c> value.</summary>
882 public static Decimal ToDecimal(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
883 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Decimal</c> value.</summary>
884 public static Decimal ToDecimal(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
885 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Decimal</c> value.</summary>
886 public static Decimal ToDecimal(SqlString p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
887
888 #endif
889
890 // From Object
891 //
892 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Decimal</c> value.</summary>
893 public static Decimal ToDecimal(object p)
894 {
895 if (p == null) return Configuration.NullableValues.Decimal;
896
897 var type = p.GetType();
898
899 // Primitive types
900 //
901 switch (Type.GetTypeCode(type))
902 {
903 case TypeCode.DBNull : return Configuration.NullableValues.Decimal;
904 case TypeCode.Decimal : return (Decimal)p;
905 case TypeCode.SByte : return ToDecimal((SByte) p);
906 case TypeCode.Int16 : return ToDecimal((Int16) p);
907 case TypeCode.Int32 : return ToDecimal((Int32) p);
908 case TypeCode.Int64 : return ToDecimal((Int64) p);
909 case TypeCode.Byte : return ToDecimal((Byte) p);
910 case TypeCode.UInt16 : return ToDecimal((UInt16) p);
911 case TypeCode.UInt32 : return ToDecimal((UInt32) p);
912 case TypeCode.Char : return ToDecimal((Char) p);
913 case TypeCode.UInt64 : return ToDecimal((UInt64) p);
914 case TypeCode.Single : return ToDecimal((Single) p);
915 case TypeCode.Double : return ToDecimal((Double) p);
916 case TypeCode.String : return ToDecimal((String) p);
917 case TypeCode.Boolean : return ToDecimal((Boolean)p);
918 }
919
920 // Nullable Types
921 //
922 if (type.IsGenericType)
923 {
924 if (p is Boolean?) return ToDecimal((Boolean?) p);
925 if (p is Byte?) return ToDecimal((Byte?) p);
926 if (p is Char?) return ToDecimal((Char?) p);
927 if (p is Decimal?) return ToDecimal((Decimal?) p);
928 if (p is Double?) return ToDecimal((Double?) p);
929 if (p is Int16?) return ToDecimal((Int16?) p);
930 if (p is Int32?) return ToDecimal((Int32?) p);
931 if (p is Int64?) return ToDecimal((Int64?) p);
932 if (p is SByte?) return ToDecimal((SByte?) p);
933 if (p is Single?) return ToDecimal((Single?) p);
934 if (p is UInt16?) return ToDecimal((UInt16?) p);
935 if (p is UInt32?) return ToDecimal((UInt32?) p);
936 if (p is UInt64?) return ToDecimal((UInt64?) p);
937 }
938
939 // Other Types
940 //
941 if (p is Binary) return ToDecimal((Binary) p);
942 if (p is Byte[]) return ToDecimal((Byte[]) p);
943
944 #if !SILVERLIGHT
945
946 // Sql Types
947 //
948 if (p is INullable)
949 {
950 if (p is SqlBoolean) return ToDecimal((SqlBoolean)p);
951 if (p is SqlByte) return ToDecimal((SqlByte) p);
952 if (p is SqlDecimal) return ToDecimal((SqlDecimal)p);
953 if (p is SqlDouble) return ToDecimal((SqlDouble) p);
954 if (p is SqlInt16) return ToDecimal((SqlInt16) p);
955 if (p is SqlInt32) return ToDecimal((SqlInt32) p);
956 if (p is SqlInt64) return ToDecimal((SqlInt64) p);
957 if (p is SqlMoney) return ToDecimal((SqlMoney) p);
958 if (p is SqlSingle) return ToDecimal((SqlSingle) p);
959 if (p is SqlString) return ToDecimal((SqlString) p);
960 }
961
962 #endif
963
964 if (p is IConvertible) return ((IConvertible)p).ToDecimal(null);
965
966 throw CreateInvalidCastException(p.GetType(), typeof(Decimal));
967 }
968
969 #endregion
970
971 #region Double
972
973 // Simple Types
974 //
975 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Double</c> value.</summary>
976 public static Double ToDouble(Boolean p) { return p ? (Double)1 : (Double)0; }
977 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Double</c> value.</summary>
978 public static Double ToDouble(Byte p) { return p; }
979 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Double</c> value.</summary>
980 public static Double ToDouble(Char p) { return p; }
981 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Double</c> value.</summary>
982 public static Double ToDouble(DateTime p) { return (p - DateTime.MinValue).TotalDays; }
983 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Double</c> value.</summary>
984 public static Double ToDouble(DateTimeOffset p) { return (p - DateTimeOffset.MinValue).TotalDays; }
985 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Double</c> value.</summary>
986 public static Double ToDouble(Decimal p) { return checked((Double)p); }
987 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Double</c> value.</summary>
988 public static Double ToDouble(Int16 p) { return p; }
989 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Double</c> value.</summary>
990 public static Double ToDouble(Int32 p) { return p; }
991 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Double</c> value.</summary>
992 public static Double ToDouble(Int64 p) { return p; }
993 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Double</c> value.</summary>
994 [CLSCompliant(false)]
995 public static Double ToDouble(SByte p) { return p; }
996 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Double</c> value.</summary>
997 public static Double ToDouble(Single p) { return p; }
998 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Double</c> value.</summary>
999 public static Double ToDouble(String p) { return p == null? Configuration.NullableValues.Double : Double.Parse(p); }
1000 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Double</c> value.</summary>
1001 public static Double ToDouble(TimeSpan p) { return p.TotalDays; }
1002 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Double</c> value.</summary>
1003 [CLSCompliant(false)]
1004 public static Double ToDouble(UInt16 p) { return p; }
1005 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Double</c> value.</summary>
1006 [CLSCompliant(false)]
1007 public static Double ToDouble(UInt32 p) { return p; }
1008 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Double</c> value.</summary>
1009 [CLSCompliant(false)]
1010 public static Double ToDouble(UInt64 p) { return p; }
1011
1012 // Nullable Types
1013 //
1014 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Double</c> value.</summary>
1015 public static Double ToDouble(Boolean? p) { return p.HasValue && p.Value ? (Double)1: (Double)0; }
1016 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Double</c> value.</summary>
1017 public static Double ToDouble(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1018 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Double</c> value.</summary>
1019 public static Double ToDouble(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1020 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Double</c> value.</summary>
1021 public static Double ToDouble(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).TotalDays : Configuration.NullableValues.Double; }
1022 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Double</c> value.</summary>
1023 public static Double ToDouble(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTimeOffset.MinValue).TotalDays : Configuration.NullableValues.Double; }
1024 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Double</c> value.</summary>
1025 public static Double ToDouble(Decimal? p) { return p.HasValue ? checked((Double)p.Value) : Configuration.NullableValues.Double; }
1026 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Double</c> value.</summary>
1027 public static Double ToDouble(Double? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1028 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Double</c> value.</summary>
1029 public static Double ToDouble(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1030 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Double</c> value.</summary>
1031 public static Double ToDouble(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1032 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Double</c> value.</summary>
1033 public static Double ToDouble(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1034 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Double</c> value.</summary>
1035 [CLSCompliant(false)]
1036 public static Double ToDouble(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1037 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Double</c> value.</summary>
1038 public static Double ToDouble(Single? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1039 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Double</c> value.</summary>
1040 public static Double ToDouble(TimeSpan? p) { return p.HasValue ? p.Value.TotalDays : Configuration.NullableValues.Double; }
1041 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Double</c> value.</summary>
1042 [CLSCompliant(false)]
1043 public static Double ToDouble(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1044 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Double</c> value.</summary>
1045 [CLSCompliant(false)]
1046 public static Double ToDouble(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1047 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Double</c> value.</summary>
1048 [CLSCompliant(false)]
1049 public static Double ToDouble(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
1050
1051 // Other Types
1052 //
1053 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Double</c> value.</summary>
1054 public static Double ToDouble(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Double : BitConverter.ToDouble(p.ToArray(), 0); }
1055 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Double</c> value.</summary>
1056 public static Double ToDouble(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Double : BitConverter.ToDouble(p, 0); }
1057
1058 #if !SILVERLIGHT
1059
1060 // Sql Types
1061 //
1062 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Double</c> value.</summary>
1063 public static Double ToDouble(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
1064 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Double</c> value.</summary>
1065 public static Double ToDouble(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
1066 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Double</c> value.</summary>
1067 public static Double ToDouble(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
1068 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Double</c> value.</summary>
1069 public static Double ToDouble(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
1070 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Double</c> value.</summary>
1071 public static Double ToDouble(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
1072 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Double</c> value.</summary>
1073 public static Double ToDouble(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
1074 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Double</c> value.</summary>
1075 public static Double ToDouble(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
1076 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Double</c> value.</summary>
1077 public static Double ToDouble(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
1078 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Double</c> value.</summary>
1079 public static Double ToDouble(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
1080 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Double</c> value.</summary>
1081 public static Double ToDouble(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
1082 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Double</c> value.</summary>
1083 public static Double ToDouble(SqlString p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
1084
1085 #endif
1086
1087 // From Object
1088 //
1089 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Double</c> value.</summary>
1090 public static Double ToDouble(object p)
1091 {
1092 if (p == null) return Configuration.NullableValues.Double;
1093
1094 var type = p.GetType();
1095
1096 // Primitive types
1097 //
1098 switch (Type.GetTypeCode(type))
1099 {
1100 case TypeCode.DBNull : return Configuration.NullableValues.Double;
1101 case TypeCode.Double : return (Double)p;
1102 case TypeCode.DateTime : return ToDouble((DateTime)p);
1103 case TypeCode.SByte : return ToDouble((SByte) p);
1104 case TypeCode.Int16 : return ToDouble((Int16) p);
1105 case TypeCode.Int32 : return ToDouble((Int32) p);
1106 case TypeCode.Int64 : return ToDouble((Int64) p);
1107 case TypeCode.Byte : return ToDouble((Byte) p);
1108 case TypeCode.UInt16 : return ToDouble((UInt16) p);
1109 case TypeCode.UInt32 : return ToDouble((UInt32) p);
1110 case TypeCode.Char : return ToDouble((Char) p);
1111 case TypeCode.UInt64 : return ToDouble((UInt64) p);
1112 case TypeCode.Single : return ToDouble((Single) p);
1113 case TypeCode.Decimal : return ToDouble((Decimal) p);
1114 case TypeCode.String : return ToDouble((String) p);
1115 case TypeCode.Boolean : return ToDouble((Boolean) p);
1116 }
1117
1118 // Simple Types
1119 //
1120 if (p is DateTimeOffset) return ToDouble((DateTimeOffset) p);
1121 if (p is TimeSpan) return ToDouble((TimeSpan) p);
1122
1123 // Nullable Types
1124 //
1125 if (type.IsGenericType)
1126 {
1127 if (p is Boolean?) return ToDouble((Boolean?) p);
1128 if (p is Byte?) return ToDouble((Byte?) p);
1129 if (p is Char?) return ToDouble((Char?) p);
1130 if (p is DateTime?) return ToDouble((DateTime?) p);
1131 if (p is DateTimeOffset?) return ToDouble((DateTimeOffset?)p);
1132 if (p is Decimal?) return ToDouble((Decimal?) p);
1133 if (p is Double?) return ToDouble((Double?) p);
1134 if (p is Int16?) return ToDouble((Int16?) p);
1135 if (p is Int32?) return ToDouble((Int32?) p);
1136 if (p is Int64?) return ToDouble((Int64?) p);
1137 if (p is SByte?) return ToDouble((SByte?) p);
1138 if (p is Single?) return ToDouble((Single?) p);
1139 if (p is TimeSpan?) return ToDouble((TimeSpan?) p);
1140 if (p is UInt16?) return ToDouble((UInt16?) p);
1141 if (p is UInt32?) return ToDouble((UInt32?) p);
1142 if (p is UInt64?) return ToDouble((UInt64?) p);
1143 }
1144
1145 // Other Types
1146 //
1147 if (p is Binary) return ToDouble((Binary) p);
1148 if (p is Byte[]) return ToDouble((Byte[]) p);
1149
1150 #if !SILVERLIGHT
1151
1152 // Sql Types
1153 //
1154 if (p is INullable)
1155 {
1156 if (p is SqlBoolean) return ToDouble((SqlBoolean) p);
1157 if (p is SqlByte) return ToDouble((SqlByte) p);
1158 if (p is SqlDateTime) return ToDouble((SqlDateTime) p);
1159 if (p is SqlDecimal) return ToDouble((SqlDecimal) p);
1160 if (p is SqlDouble) return ToDouble((SqlDouble) p);
1161 if (p is SqlInt16) return ToDouble((SqlInt16) p);
1162 if (p is SqlInt32) return ToDouble((SqlInt32) p);
1163 if (p is SqlInt64) return ToDouble((SqlInt64) p);
1164 if (p is SqlMoney) return ToDouble((SqlMoney) p);
1165 if (p is SqlSingle) return ToDouble((SqlSingle) p);
1166 if (p is SqlString) return ToDouble((SqlString) p);
1167 }
1168
1169 #endif
1170
1171 if (p is IConvertible) return ((IConvertible)p).ToDouble(null);
1172
1173 throw CreateInvalidCastException(p.GetType(), typeof(Double));
1174 }
1175
1176 #endregion
1177
1178 #region Guid
1179
1180 // Simple Types
1181 //
1182 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Guid</c> value.</summary>
1183 public static Guid ToGuid(String p) { return p == null ? Configuration.NullableValues.Guid : new Guid(p); }
1184
1185 // Nullable Types
1186 //
1187 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Guid</c> value.</summary>
1188 public static Guid ToGuid(Guid? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Guid; }
1189
1190 // Other Types
1191 //
1192 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Guid</c> value.</summary>
1193 public static Guid ToGuid(Binary p) { return p == null ? Configuration.NullableValues.Guid : new Guid(p.ToArray()); }
1194 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Guid</c> value.</summary>
1195 public static Guid ToGuid(Byte[] p) { return p == null ? Configuration.NullableValues.Guid : new Guid(p); }
1196 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>Guid</c> value.</summary>
1197 public static Guid ToGuid(Type p) { return p == null ? Configuration.NullableValues.Guid : p.GUID; }
1198
1199 #if !SILVERLIGHT
1200
1201 // Sql Types
1202 //
1203 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Guid</c> value.</summary>
1204 public static Guid ToGuid(SqlBinary p) { return p.IsNull ? Configuration.NullableValues.Guid : p.ToSqlGuid().Value; }
1205 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Guid</c> value.</summary>
1206 public static Guid ToGuid(SqlGuid p) { return p.IsNull ? Configuration.NullableValues.Guid : p.Value; }
1207 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Guid</c> value.</summary>
1208 public static Guid ToGuid(SqlString p) { return p.IsNull ? Configuration.NullableValues.Guid : new Guid(p.Value); }
1209
1210 #endif
1211
1212 // From Object
1213 //
1214 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Guid</c> value.</summary>
1215 public static Guid ToGuid(object p)
1216 {
1217 if (p == null) return Configuration.NullableValues.Guid;
1218
1219 if (p is Guid) return (Guid)p;
1220
1221 var type = p.GetType();
1222
1223 // Primitive types
1224 //
1225 switch (Type.GetTypeCode(type))
1226 {
1227 case TypeCode.DBNull : return Configuration.NullableValues.Guid;
1228 case TypeCode.String : return ToGuid((String)p);
1229 }
1230
1231 // Nullable Types
1232 //
1233 if (type.IsGenericType)
1234 {
1235 if (p is Guid?) return ToGuid((Guid?) p);
1236 }
1237
1238 // Other Types
1239 //
1240 if (p is Binary) return ToGuid((Binary) p);
1241 if (p is Byte[]) return ToGuid((Byte[]) p);
1242 if (p is Type) return ToGuid((Type) p);
1243
1244 #if !SILVERLIGHT
1245
1246 // Sql Types
1247 //
1248 if (p is INullable)
1249 {
1250 if (p is SqlBinary) return ToGuid((SqlBinary)p);
1251 if (p is SqlGuid) return ToGuid((SqlGuid) p);
1252 if (p is SqlString) return ToGuid((SqlString)p);
1253 }
1254
1255 #endif
1256
1257 throw CreateInvalidCastException(p.GetType(), typeof(Guid));
1258 }
1259
1260 #endregion
1261
1262 #region Int16
1263
1264 // Simple Types
1265 //
1266 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int16</c> value.</summary>
1267 public static Int16 ToInt16(Boolean p) { return p ? (Int16)1 : (Int16)0; }
1268 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int16</c> value.</summary>
1269 public static Int16 ToInt16(Byte p) { return p; }
1270 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int16</c> value.</summary>
1271 public static Int16 ToInt16(Char p) { return checked((Int16)p); }
1272 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int16</c> value.</summary>
1273 public static Int16 ToInt16(Decimal p) { return checked((Int16)p); }
1274 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int16</c> value.</summary>
1275 public static Int16 ToInt16(Double p) { return checked((Int16)p); }
1276 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int16</c> value.</summary>
1277 public static Int16 ToInt16(Int32 p) { return checked((Int16)p); }
1278 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int16</c> value.</summary>
1279 public static Int16 ToInt16(Int64 p) { return checked((Int16)p); }
1280 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int16</c> value.</summary>
1281 [CLSCompliant(false)]
1282 public static Int16 ToInt16(SByte p) { return p; }
1283 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int16</c> value.</summary>
1284 public static Int16 ToInt16(Single p) { return checked((Int16)p); }
1285 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int16</c> value.</summary>
1286 public static Int16 ToInt16(String p) { return p == null? Configuration.NullableValues.Int16 : Int16.Parse(p); }
1287 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int16</c> value.</summary>
1288 [CLSCompliant(false)]
1289 public static Int16 ToInt16(UInt16 p) { return checked((Int16)p); }
1290 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int16</c> value.</summary>
1291 [CLSCompliant(false)]
1292 public static Int16 ToInt16(UInt32 p) { return checked((Int16)p); }
1293 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int16</c> value.</summary>
1294 [CLSCompliant(false)]
1295 public static Int16 ToInt16(UInt64 p) { return checked((Int16)p); }
1296
1297 // Nullable Types
1298 //
1299 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int16</c> value.</summary>
1300 public static Int16 ToInt16(Boolean? p) { return p.HasValue && p.Value ? (Int16)1: (Int16)0; }
1301 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int16</c> value.</summary>
1302 public static Int16 ToInt16(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int16; }
1303 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int16</c> value.</summary>
1304 public static Int16 ToInt16(Char? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1305 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int16</c> value.</summary>
1306 public static Int16 ToInt16(Decimal? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1307 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int16</c> value.</summary>
1308 public static Int16 ToInt16(Double? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1309 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int16</c> value.</summary>
1310 public static Int16 ToInt16(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int16; }
1311 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int16</c> value.</summary>
1312 public static Int16 ToInt16(Int32? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1313 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int16</c> value.</summary>
1314 public static Int16 ToInt16(Int64? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1315 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int16</c> value.</summary>
1316 [CLSCompliant(false)]
1317 public static Int16 ToInt16(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int16; }
1318 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int16</c> value.</summary>
1319 public static Int16 ToInt16(Single? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1320 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int16</c> value.</summary>
1321 [CLSCompliant(false)]
1322 public static Int16 ToInt16(UInt16? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1323 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int16</c> value.</summary>
1324 [CLSCompliant(false)]
1325 public static Int16 ToInt16(UInt32? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1326 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int16</c> value.</summary>
1327 [CLSCompliant(false)]
1328 public static Int16 ToInt16(UInt64? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
1329
1330 // Other Types
1331 //
1332 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int16</c> value.</summary>
1333 public static Int16 ToInt16(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int16 : BitConverter.ToInt16(p.ToArray(), 0); }
1334 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int16</c> value.</summary>
1335 public static Int16 ToInt16(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int16 : BitConverter.ToInt16(p, 0); }
1336
1337 #if !SILVERLIGHT
1338
1339 // Sql Types
1340 //
1341 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int16</c> value.</summary>
1342 public static Int16 ToInt16(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1343 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int16</c> value.</summary>
1344 public static Int16 ToInt16(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Int16 : p.Value; }
1345 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int16</c> value.</summary>
1346 public static Int16 ToInt16(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1347 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int16</c> value.</summary>
1348 public static Int16 ToInt16(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1349 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int16</c> value.</summary>
1350 public static Int16 ToInt16(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Int16 : p.Value; }
1351 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int16</c> value.</summary>
1352 public static Int16 ToInt16(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1353 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int16</c> value.</summary>
1354 public static Int16 ToInt16(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1355 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int16</c> value.</summary>
1356 public static Int16 ToInt16(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1357 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int16</c> value.</summary>
1358 public static Int16 ToInt16(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1359 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int16</c> value.</summary>
1360 public static Int16 ToInt16(SqlString p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
1361
1362 #endif
1363
1364 // From Object
1365 //
1366 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int16</c> value.</summary>
1367 public static Int16 ToInt16(object p)
1368 {
1369 if (p == null) return Configuration.NullableValues.Int16;
1370
1371 var type = p.GetType();
1372
1373 // Primitive types
1374 //
1375 switch (Type.GetTypeCode(type))
1376 {
1377 case TypeCode.DBNull : return Configuration.NullableValues.Int16;
1378 case TypeCode.Int16 : return (Int16)p;
1379 case TypeCode.SByte : return ToInt16((SByte) p);
1380 case TypeCode.Byte : return ToInt16((Byte) p);
1381 case TypeCode.Int32 : return ToInt16((Int32) p);
1382 case TypeCode.Int64 : return ToInt16((Int64) p);
1383 case TypeCode.UInt16 : return ToInt16((UInt16) p);
1384 case TypeCode.UInt32 : return ToInt16((UInt32) p);
1385 case TypeCode.UInt64 : return ToInt16((UInt64) p);
1386 case TypeCode.Single : return ToInt16((Single) p);
1387 case TypeCode.Double : return ToInt16((Double) p);
1388 case TypeCode.Decimal : return ToInt16((Decimal)p);
1389 case TypeCode.Char : return ToInt16((Char) p);
1390 case TypeCode.String : return ToInt16((String) p);
1391 case TypeCode.Boolean : return ToInt16((Boolean)p);
1392 }
1393
1394 // Nullable Types
1395 //
1396 if (type.IsGenericType)
1397 {
1398 if (p is Boolean?) return ToInt16((Boolean?) p);
1399 if (p is Byte?) return ToInt16((Byte?) p);
1400 if (p is Char?) return ToInt16((Char?) p);
1401 if (p is Decimal?) return ToInt16((Decimal?) p);
1402 if (p is Double?) return ToInt16((Double?) p);
1403 if (p is Int16?) return ToInt16((Int16?) p);
1404 if (p is Int32?) return ToInt16((Int32?) p);
1405 if (p is Int64?) return ToInt16((Int64?) p);
1406 if (p is SByte?) return ToInt16((SByte?) p);
1407 if (p is Single?) return ToInt16((Single?) p);
1408 if (p is UInt16?) return ToInt16((UInt16?) p);
1409 if (p is UInt32?) return ToInt16((UInt32?) p);
1410 if (p is UInt64?) return ToInt16((UInt64?) p);
1411 }
1412
1413 // Other Types
1414 //
1415 if (p is Binary) return ToInt16((Binary) p);
1416 if (p is Byte[]) return ToInt16((Byte[]) p);
1417
1418 #if !SILVERLIGHT
1419
1420 // Sql Types
1421 //
1422 if (p is INullable)
1423 {
1424 if (p is SqlBoolean) return ToInt16((SqlBoolean)p);
1425 if (p is SqlByte) return ToInt16((SqlByte) p);
1426 if (p is SqlDecimal) return ToInt16((SqlDecimal)p);
1427 if (p is SqlDouble) return ToInt16((SqlDouble) p);
1428 if (p is SqlInt16) return ToInt16((SqlInt16) p);
1429 if (p is SqlInt32) return ToInt16((SqlInt32) p);
1430 if (p is SqlInt64) return ToInt16((SqlInt64) p);
1431 if (p is SqlMoney) return ToInt16((SqlMoney) p);
1432 if (p is SqlSingle) return ToInt16((SqlSingle) p);
1433 if (p is SqlString) return ToInt16((SqlString) p);
1434 }
1435
1436 #endif
1437
1438 if (p is IConvertible) return ((IConvertible)p).ToInt16(null);
1439
1440 throw CreateInvalidCastException(p.GetType(), typeof(Int16));
1441 }
1442
1443 #endregion
1444
1445 #region Int32
1446
1447 // Simple Types
1448 //
1449 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int32</c> value.</summary>
1450 public static Int32 ToInt32(Boolean p) { return p ? (Int32)1 : (Int32)0; }
1451 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int32</c> value.</summary>
1452 public static Int32 ToInt32(Byte p) { return p; }
1453 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int32</c> value.</summary>
1454 public static Int32 ToInt32(Char p) { return p; }
1455 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int32</c> value.</summary>
1456 public static Int32 ToInt32(Decimal p) { return checked((Int32)p); }
1457 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int32</c> value.</summary>
1458 public static Int32 ToInt32(Double p) { return checked((Int32)p); }
1459 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int32</c> value.</summary>
1460 public static Int32 ToInt32(Int16 p) { return p; }
1461 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int32</c> value.</summary>
1462 public static Int32 ToInt32(Int64 p) { return checked((Int32)p); }
1463 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int32</c> value.</summary>
1464 [CLSCompliant(false)]
1465 public static Int32 ToInt32(SByte p) { return p; }
1466 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int32</c> value.</summary>
1467 public static Int32 ToInt32(Single p) { return checked((Int32)p); }
1468 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int32</c> value.</summary>
1469 public static Int32 ToInt32(String p) { return p == null? Configuration.NullableValues.Int32 : Int32.Parse(p); }
1470 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int32</c> value.</summary>
1471 [CLSCompliant(false)]
1472 public static Int32 ToInt32(UInt16 p) { return p; }
1473 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int32</c> value.</summary>
1474 [CLSCompliant(false)]
1475 public static Int32 ToInt32(UInt32 p) { return checked((Int32)p); }
1476 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int32</c> value.</summary>
1477 [CLSCompliant(false)]
1478 public static Int32 ToInt32(UInt64 p) { return checked((Int32)p); }
1479
1480 // Nullable Types
1481 //
1482 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int32</c> value.</summary>
1483 public static Int32 ToInt32(Boolean? p) { return p.HasValue && p.Value ? (Int32)1: (Int32)0; }
1484 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int32</c> value.</summary>
1485 public static Int32 ToInt32(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
1486 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int32</c> value.</summary>
1487 public static Int32 ToInt32(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
1488 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int32</c> value.</summary>
1489 public static Int32 ToInt32(Decimal? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
1490 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int32</c> value.</summary>
1491 public static Int32 ToInt32(Double? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
1492 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int32</c> value.</summary>
1493 public static Int32 ToInt32(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
1494 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int32</c> value.</summary>
1495 public static Int32 ToInt32(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
1496 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int32</c> value.</summary>
1497 public static Int32 ToInt32(Int64? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
1498 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int32</c> value.</summary>
1499 [CLSCompliant(false)]
1500 public static Int32 ToInt32(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
1501 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int32</c> value.</summary>
1502 public static Int32 ToInt32(Single? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
1503 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int32</c> value.</summary>
1504 [CLSCompliant(false)]
1505 public static Int32 ToInt32(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
1506 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int32</c> value.</summary>
1507 [CLSCompliant(false)]
1508 public static Int32 ToInt32(UInt32? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
1509 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int32</c> value.</summary>
1510 [CLSCompliant(false)]
1511 public static Int32 ToInt32(UInt64? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
1512
1513 // Other Types
1514 //
1515 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int32</c> value.</summary>
1516 public static Int32 ToInt32(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int32 : BitConverter.ToInt32(p.ToArray(), 0); }
1517 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int32</c> value.</summary>
1518 public static Int32 ToInt32(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int32 : BitConverter.ToInt32(p, 0); }
1519
1520 #if !SILVERLIGHT
1521
1522 // Sql Types
1523 //
1524 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int32</c> value.</summary>
1525 public static Int32 ToInt32(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
1526 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int32</c> value.</summary>
1527 public static Int32 ToInt32(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Int32 : p.Value; }
1528 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int32</c> value.</summary>
1529 public static Int32 ToInt32(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
1530 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int32</c> value.</summary>
1531 public static Int32 ToInt32(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
1532 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int32</c> value.</summary>
1533 public static Int32 ToInt32(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Int32 : p.Value; }
1534 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int32</c> value.</summary>
1535 public static Int32 ToInt32(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Int32 : p.Value; }
1536 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int32</c> value.</summary>
1537 public static Int32 ToInt32(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
1538 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int32</c> value.</summary>
1539 public static Int32 ToInt32(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
1540 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int32</c> value.</summary>
1541 public static Int32 ToInt32(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
1542 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int32</c> value.</summary>
1543 public static Int32 ToInt32(SqlString p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
1544
1545 #endif
1546
1547 // From Object
1548 //
1549 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int32</c> value.</summary>
1550 public static Int32 ToInt32(object p)
1551 {
1552 if (p == null) return Configuration.NullableValues.Int32;
1553
1554 var type = p.GetType();
1555
1556 // Primitive types
1557 //
1558 switch (Type.GetTypeCode(type))
1559 {
1560 case TypeCode.DBNull : return Configuration.NullableValues.Int32;
1561 case TypeCode.Int32 : return (Int32)p;
1562 case TypeCode.SByte : return ToInt32((SByte) p);
1563 case TypeCode.Int16 : return ToInt32((Int16) p);
1564 case TypeCode.Byte : return ToInt32((Byte) p);
1565 case TypeCode.UInt16 : return ToInt32((UInt16) p);
1566 case TypeCode.Char : return ToInt32((Char) p);
1567 case TypeCode.Int64 : return ToInt32((Int64) p);
1568 case TypeCode.UInt32 : return ToInt32((UInt32) p);
1569 case TypeCode.UInt64 : return ToInt32((UInt64) p);
1570 case TypeCode.Single : return ToInt32((Single) p);
1571 case TypeCode.Double : return ToInt32((Double) p);
1572 case TypeCode.Decimal : return ToInt32((Decimal)p);
1573 case TypeCode.String : return ToInt32((String) p);
1574 case TypeCode.Boolean : return ToInt32((Boolean)p);
1575 }
1576
1577 // Nullable Types
1578 //
1579 if (type.IsGenericType)
1580 {
1581 if (p is Boolean?) return ToInt32((Boolean?) p);
1582 if (p is Byte?) return ToInt32((Byte?) p);
1583 if (p is Char?) return ToInt32((Char?) p);
1584 if (p is Decimal?) return ToInt32((Decimal?) p);
1585 if (p is Double?) return ToInt32((Double?) p);
1586 if (p is Int16?) return ToInt32((Int16?) p);
1587 if (p is Int32?) return ToInt32((Int32?) p);
1588 if (p is Int64?) return ToInt32((Int64?) p);
1589 if (p is SByte?) return ToInt32((SByte?) p);
1590 if (p is Single?) return ToInt32((Single?) p);
1591 if (p is UInt16?) return ToInt32((UInt16?) p);
1592 if (p is UInt32?) return ToInt32((UInt32?) p);
1593 if (p is UInt64?) return ToInt32((UInt64?) p);
1594 }
1595
1596 // Other Types
1597 //
1598 if (p is Binary) return ToInt32((Binary) p);
1599 if (p is Byte[]) return ToInt32((Byte[]) p);
1600
1601 #if !SILVERLIGHT
1602
1603 // Sql Types
1604 //
1605 if (p is INullable)
1606 {
1607 if (p is SqlBoolean) return ToInt32((SqlBoolean)p);
1608 if (p is SqlByte) return ToInt32((SqlByte) p);
1609 if (p is SqlDecimal) return ToInt32((SqlDecimal)p);
1610 if (p is SqlDouble) return ToInt32((SqlDouble) p);
1611 if (p is SqlInt16) return ToInt32((SqlInt16) p);
1612 if (p is SqlInt32) return ToInt32((SqlInt32) p);
1613 if (p is SqlInt64) return ToInt32((SqlInt64) p);
1614 if (p is SqlMoney) return ToInt32((SqlMoney) p);
1615 if (p is SqlSingle) return ToInt32((SqlSingle) p);
1616 if (p is SqlString) return ToInt32((SqlString) p);
1617 }
1618
1619 #endif
1620
1621 if (p is IConvertible) return ((IConvertible)p).ToInt32(null);
1622
1623 throw CreateInvalidCastException(p.GetType(), typeof(Int32));
1624 }
1625
1626 #endregion
1627
1628 #region Int64
1629
1630 // Simple Types
1631 //
1632 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int64</c> value.</summary>
1633 public static Int64 ToInt64(Boolean p) { return p ? (Int64)1 : (Int64)0; }
1634 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int64</c> value.</summary>
1635 public static Int64 ToInt64(Byte p) { return p; }
1636 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int64</c> value.</summary>
1637 public static Int64 ToInt64(Char p) { return p; }
1638 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Int64</c> value.</summary>
1639 public static Int64 ToInt64(DateTime p) { return (p - DateTime.MinValue).Ticks; }
1640 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Int64</c> value.</summary>
1641 public static Int64 ToInt64(DateTimeOffset p) { return (p - DateTime.MinValue).Ticks; }
1642 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int64</c> value.</summary>
1643 public static Int64 ToInt64(Decimal p) { return checked((Int64)p); }
1644 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int64</c> value.</summary>
1645 public static Int64 ToInt64(Double p) { return checked((Int64)p); }
1646 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int64</c> value.</summary>
1647 public static Int64 ToInt64(Int16 p) { return p; }
1648 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int64</c> value.</summary>
1649 public static Int64 ToInt64(Int32 p) { return p; }
1650 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int64</c> value.</summary>
1651 [CLSCompliant(false)]
1652 public static Int64 ToInt64(SByte p) { return p; }
1653 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int64</c> value.</summary>
1654 public static Int64 ToInt64(Single p) { return checked((Int64)p); }
1655 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int64</c> value.</summary>
1656 public static Int64 ToInt64(String p) { return p == null? Configuration.NullableValues.Int64 : Int64.Parse(p); }
1657 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Int64</c> value.</summary>
1658 public static Int64 ToInt64(TimeSpan p) { return p.Ticks; }
1659 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int64</c> value.</summary>
1660 [CLSCompliant(false)]
1661 public static Int64 ToInt64(UInt16 p) { return p; }
1662 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int64</c> value.</summary>
1663 [CLSCompliant(false)]
1664 public static Int64 ToInt64(UInt32 p) { return p; }
1665 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int64</c> value.</summary>
1666 [CLSCompliant(false)]
1667 public static Int64 ToInt64(UInt64 p) { return checked((Int64)p); }
1668
1669 // Nullable Types
1670 //
1671 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int64</c> value.</summary>
1672 public static Int64 ToInt64(Boolean? p) { return p.HasValue && p.Value ? (Int64)1: (Int64)0; }
1673 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int64</c> value.</summary>
1674 public static Int64 ToInt64(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1675 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int64</c> value.</summary>
1676 public static Int64 ToInt64(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1677 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Int64</c> value.</summary>
1678 public static Int64 ToInt64(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
1679 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Int64</c> value.</summary>
1680 public static Int64 ToInt64(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
1681 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int64</c> value.</summary>
1682 public static Int64 ToInt64(Decimal? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
1683 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int64</c> value.</summary>
1684 public static Int64 ToInt64(Double? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
1685 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int64</c> value.</summary>
1686 public static Int64 ToInt64(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1687 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int64</c> value.</summary>
1688 public static Int64 ToInt64(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1689 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int64</c> value.</summary>
1690 public static Int64 ToInt64(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1691 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int64</c> value.</summary>
1692 [CLSCompliant(false)]
1693 public static Int64 ToInt64(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1694 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int64</c> value.</summary>
1695 public static Int64 ToInt64(Single? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
1696 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Int64</c> value.</summary>
1697 public static Int64 ToInt64(TimeSpan? p) { return p.HasValue ? p.Value.Ticks : 0; }
1698 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int64</c> value.</summary>
1699 [CLSCompliant(false)]
1700 public static Int64 ToInt64(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1701 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int64</c> value.</summary>
1702 [CLSCompliant(false)]
1703 public static Int64 ToInt64(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
1704 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int64</c> value.</summary>
1705 [CLSCompliant(false)]
1706 public static Int64 ToInt64(UInt64? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
1707
1708 // Other Types
1709 //
1710 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int64</c> value.</summary>
1711 public static Int64 ToInt64(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int64 : BitConverter.ToInt64(p.ToArray(), 0); }
1712 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int64</c> value.</summary>
1713 public static Int64 ToInt64(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int64 : BitConverter.ToInt64(p, 0); }
1714
1715 #if !SILVERLIGHT
1716
1717 // Sql Types
1718 //
1719 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int64</c> value.</summary>
1720 public static Int64 ToInt64(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
1721 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int64</c> value.</summary>
1722 public static Int64 ToInt64(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
1723 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Int64</c> value.</summary>
1724 public static Int64 ToInt64(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
1725 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int64</c> value.</summary>
1726 public static Int64 ToInt64(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
1727 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int64</c> value.</summary>
1728 public static Int64 ToInt64(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
1729 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int64</c> value.</summary>
1730 public static Int64 ToInt64(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
1731 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int64</c> value.</summary>
1732 public static Int64 ToInt64(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
1733 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int64</c> value.</summary>
1734 public static Int64 ToInt64(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
1735 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int64</c> value.</summary>
1736 public static Int64 ToInt64(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
1737 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int64</c> value.</summary>
1738 public static Int64 ToInt64(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
1739 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int64</c> value.</summary>
1740 public static Int64 ToInt64(SqlString p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
1741
1742 #endif
1743
1744 // From Object
1745 //
1746 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int64</c> value.</summary>
1747 public static Int64 ToInt64(object p)
1748 {
1749 if (p == null) return Configuration.NullableValues.Int64;
1750
1751 var type = p.GetType();
1752
1753 // Primitive types
1754 //
1755 switch (Type.GetTypeCode(type))
1756 {
1757 case TypeCode.DBNull : return Configuration.NullableValues.Int64;
1758 case TypeCode.Int64 : return (Int64)p;
1759 case TypeCode.DateTime : return ToInt64((DateTime)p);
1760 case TypeCode.SByte : return ToInt64((SByte) p);
1761 case TypeCode.Int16 : return ToInt64((Int16) p);
1762 case TypeCode.Int32 : return ToInt64((Int32) p);
1763 case TypeCode.Byte : return ToInt64((Byte) p);
1764 case TypeCode.UInt16 : return ToInt64((UInt16) p);
1765 case TypeCode.UInt32 : return ToInt64((UInt32) p);
1766 case TypeCode.Char : return ToInt64((Char) p);
1767 case TypeCode.UInt64 : return ToInt64((UInt64) p);
1768 case TypeCode.Single : return ToInt64((Single) p);
1769 case TypeCode.Double : return ToInt64((Double) p);
1770 case TypeCode.Decimal : return ToInt64((Decimal) p);
1771 case TypeCode.String : return ToInt64((String) p);
1772 case TypeCode.Boolean : return ToInt64((Boolean) p);
1773 }
1774
1775 // Simple Types
1776 //
1777 if (p is DateTimeOffset) return ToInt64((DateTimeOffset) p);
1778 if (p is TimeSpan) return ToInt64((TimeSpan) p);
1779
1780 // Nullable Types
1781 //
1782 if (type.IsGenericType)
1783 {
1784 if (p is Boolean?) return ToInt64((Boolean?) p);
1785 if (p is Byte?) return ToInt64((Byte?) p);
1786 if (p is Char?) return ToInt64((Char?) p);
1787 if (p is DateTime?) return ToInt64((DateTime?) p);
1788 if (p is DateTimeOffset?) return ToInt64((DateTimeOffset?)p);
1789 if (p is Decimal?) return ToInt64((Decimal?) p);
1790 if (p is Double?) return ToInt64((Double?) p);
1791 if (p is Int16?) return ToInt64((Int16?) p);
1792 if (p is Int32?) return ToInt64((Int32?) p);
1793 if (p is Int64?) return ToInt64((Int64?) p);
1794 if (p is SByte?) return ToInt64((SByte?) p);
1795 if (p is Single?) return ToInt64((Single?) p);
1796 if (p is TimeSpan?) return ToInt64((TimeSpan?) p);
1797 if (p is UInt16?) return ToInt64((UInt16?) p);
1798 if (p is UInt32?) return ToInt64((UInt32?) p);
1799 if (p is UInt64?) return ToInt64((UInt64?) p);
1800 }
1801
1802 // Other Types
1803 //
1804 if (p is Binary) return ToInt64((Binary) p);
1805 if (p is Byte[]) return ToInt64((Byte[]) p);
1806
1807 #if !SILVERLIGHT
1808
1809 // Sql Types
1810 //
1811 if (p is INullable)
1812 {
1813 if (p is SqlBoolean) return ToInt64((SqlBoolean) p);
1814 if (p is SqlByte) return ToInt64((SqlByte) p);
1815 if (p is SqlDateTime) return ToInt64((SqlDateTime) p);
1816 if (p is SqlDecimal) return ToInt64((SqlDecimal) p);
1817 if (p is SqlDouble) return ToInt64((SqlDouble) p);
1818 if (p is SqlInt16) return ToInt64((SqlInt16) p);
1819 if (p is SqlInt32) return ToInt64((SqlInt32) p);
1820 if (p is SqlInt64) return ToInt64((SqlInt64) p);
1821 if (p is SqlMoney) return ToInt64((SqlMoney) p);
1822 if (p is SqlSingle) return ToInt64((SqlSingle) p);
1823 if (p is SqlString) return ToInt64((SqlString) p);
1824 }
1825
1826 #endif
1827
1828 if (p is IConvertible) return ((IConvertible)p).ToInt64(null);
1829
1830 throw CreateInvalidCastException(p.GetType(), typeof(Int64));
1831 }
1832
1833 #endregion
1834
1835 #region SByte
1836
1837 // Simple Types
1838 //
1839 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SByte</c> value.</summary>
1840 [CLSCompliant(false)]
1841 public static SByte ToSByte(Boolean p) { return p ? (SByte)1 : (SByte)0; }
1842 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SByte</c> value.</summary>
1843 [CLSCompliant(false)]
1844 public static SByte ToSByte(Byte p) { return checked((SByte)p); }
1845 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SByte</c> value.</summary>
1846 [CLSCompliant(false)]
1847 public static SByte ToSByte(Char p) { return checked((SByte)p); }
1848 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SByte</c> value.</summary>
1849 [CLSCompliant(false)]
1850 public static SByte ToSByte(Decimal p) { return checked((SByte)p); }
1851 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SByte</c> value.</summary>
1852 [CLSCompliant(false)]
1853 public static SByte ToSByte(Double p) { return checked((SByte)p); }
1854 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SByte</c> value.</summary>
1855 [CLSCompliant(false)]
1856 public static SByte ToSByte(Int16 p) { return checked((SByte)p); }
1857 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SByte</c> value.</summary>
1858 [CLSCompliant(false)]
1859 public static SByte ToSByte(Int32 p) { return checked((SByte)p); }
1860 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SByte</c> value.</summary>
1861 [CLSCompliant(false)]
1862 public static SByte ToSByte(Int64 p) { return checked((SByte)p); }
1863 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SByte</c> value.</summary>
1864 [CLSCompliant(false)]
1865 public static SByte ToSByte(Single p) { return checked((SByte)p); }
1866 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SByte</c> value.</summary>
1867 [CLSCompliant(false)]
1868 public static SByte ToSByte(String p) { return p == null? Configuration.NullableValues.SByte : SByte.Parse(p); }
1869 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SByte</c> value.</summary>
1870 [CLSCompliant(false)]
1871 public static SByte ToSByte(UInt16 p) { return checked((SByte)p); }
1872 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SByte</c> value.</summary>
1873 [CLSCompliant(false)]
1874 public static SByte ToSByte(UInt32 p) { return checked((SByte)p); }
1875 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SByte</c> value.</summary>
1876 [CLSCompliant(false)]
1877 public static SByte ToSByte(UInt64 p) { return checked((SByte)p); }
1878
1879 // Nullable Types
1880 //
1881 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SByte</c> value.</summary>
1882 [CLSCompliant(false)]
1883 public static SByte ToSByte(Boolean? p) { return p.HasValue && p.Value ? (SByte)1: (SByte)0; }
1884 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SByte</c> value.</summary>
1885 [CLSCompliant(false)]
1886 public static SByte ToSByte(Byte? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1887 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SByte</c> value.</summary>
1888 [CLSCompliant(false)]
1889 public static SByte ToSByte(Char? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1890 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SByte</c> value.</summary>
1891 [CLSCompliant(false)]
1892 public static SByte ToSByte(Decimal? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1893 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SByte</c> value.</summary>
1894 [CLSCompliant(false)]
1895 public static SByte ToSByte(Double? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1896 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SByte</c> value.</summary>
1897 [CLSCompliant(false)]
1898 public static SByte ToSByte(Int16? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1899 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SByte</c> value.</summary>
1900 [CLSCompliant(false)]
1901 public static SByte ToSByte(Int32? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1902 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SByte</c> value.</summary>
1903 [CLSCompliant(false)]
1904 public static SByte ToSByte(Int64? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1905 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SByte</c> value.</summary>
1906 [CLSCompliant(false)]
1907 public static SByte ToSByte(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.SByte; }
1908 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SByte</c> value.</summary>
1909 [CLSCompliant(false)]
1910 public static SByte ToSByte(Single? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1911 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SByte</c> value.</summary>
1912 [CLSCompliant(false)]
1913 public static SByte ToSByte(UInt16? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1914 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SByte</c> value.</summary>
1915 [CLSCompliant(false)]
1916 public static SByte ToSByte(UInt32? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1917 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SByte</c> value.</summary>
1918 [CLSCompliant(false)]
1919 public static SByte ToSByte(UInt64? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
1920
1921 // Other Types
1922 //
1923 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SByte</c> value.</summary>
1924 [CLSCompliant(false)]
1925 public static SByte ToSByte(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.SByte : checked((SByte)p.ToArray()[0]); }
1926 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SByte</c> value.</summary>
1927 [CLSCompliant(false)]
1928 public static SByte ToSByte(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.SByte : checked((SByte)p[0]); }
1929
1930 #if !SILVERLIGHT
1931
1932 // Sql Types
1933 //
1934 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SByte</c> value.</summary>
1935 [CLSCompliant(false)]
1936 public static SByte ToSByte(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1937 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SByte</c> value.</summary>
1938 [CLSCompliant(false)]
1939 public static SByte ToSByte(SqlByte p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1940 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SByte</c> value.</summary>
1941 [CLSCompliant(false)]
1942 public static SByte ToSByte(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1943 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SByte</c> value.</summary>
1944 [CLSCompliant(false)]
1945 public static SByte ToSByte(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1946 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SByte</c> value.</summary>
1947 [CLSCompliant(false)]
1948 public static SByte ToSByte(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1949 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SByte</c> value.</summary>
1950 [CLSCompliant(false)]
1951 public static SByte ToSByte(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1952 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SByte</c> value.</summary>
1953 [CLSCompliant(false)]
1954 public static SByte ToSByte(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1955 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SByte</c> value.</summary>
1956 [CLSCompliant(false)]
1957 public static SByte ToSByte(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1958 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SByte</c> value.</summary>
1959 [CLSCompliant(false)]
1960 public static SByte ToSByte(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1961 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SByte</c> value.</summary>
1962 [CLSCompliant(false)]
1963 public static SByte ToSByte(SqlString p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
1964
1965 #endif
1966
1967 // From Object
1968 //
1969 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SByte</c> value.</summary>
1970 [CLSCompliant(false)]
1971 public static SByte ToSByte(object p)
1972 {
1973 if (p == null) return Configuration.NullableValues.SByte;
1974
1975 var type = p.GetType();
1976
1977 // Primitive types
1978 //
1979 switch (Type.GetTypeCode(type))
1980 {
1981 case TypeCode.DBNull : return Configuration.NullableValues.SByte;
1982 case TypeCode.SByte : return (SByte)p;
1983 case TypeCode.Int16 : return ToSByte((Int16) p);
1984 case TypeCode.Int32 : return ToSByte((Int32) p);
1985 case TypeCode.Int64 : return ToSByte((Int64) p);
1986 case TypeCode.Byte : return ToSByte((Byte) p);
1987 case TypeCode.UInt16 : return ToSByte((UInt16) p);
1988 case TypeCode.UInt32 : return ToSByte((UInt32) p);
1989 case TypeCode.UInt64 : return ToSByte((UInt64) p);
1990 case TypeCode.Single : return ToSByte((Single) p);
1991 case TypeCode.Double : return ToSByte((Double) p);
1992 case TypeCode.Decimal : return ToSByte((Decimal)p);
1993 case TypeCode.Char : return ToSByte((Char) p);
1994 case TypeCode.String : return ToSByte((String) p);
1995 case TypeCode.Boolean : return ToSByte((Boolean)p);
1996 }
1997
1998 // Nullable Types
1999 //
2000 if (type.IsGenericType)
2001 {
2002 if (p is Boolean?) return ToSByte((Boolean?) p);
2003 if (p is Byte?) return ToSByte((Byte?) p);
2004 if (p is Char?) return ToSByte((Char?) p);
2005 if (p is Decimal?) return ToSByte((Decimal?) p);
2006 if (p is Double?) return ToSByte((Double?) p);
2007 if (p is Int16?) return ToSByte((Int16?) p);
2008 if (p is Int32?) return ToSByte((Int32?) p);
2009 if (p is Int64?) return ToSByte((Int64?) p);
2010 if (p is SByte?) return ToSByte((SByte?) p);
2011 if (p is Single?) return ToSByte((Single?) p);
2012 if (p is UInt16?) return ToSByte((UInt16?) p);
2013 if (p is UInt32?) return ToSByte((UInt32?) p);
2014 if (p is UInt64?) return ToSByte((UInt64?) p);
2015 }
2016
2017 // Other Types
2018 //
2019 if (p is Binary) return ToSByte((Binary) p);
2020 if (p is Byte[]) return ToSByte((Byte[]) p);
2021
2022 #if !SILVERLIGHT
2023
2024 // Sql Types
2025 //
2026 if (p is INullable)
2027 {
2028 if (p is SqlBoolean) return ToSByte((SqlBoolean)p);
2029 if (p is SqlByte) return ToSByte((SqlByte) p);
2030 if (p is SqlDecimal) return ToSByte((SqlDecimal)p);
2031 if (p is SqlDouble) return ToSByte((SqlDouble) p);
2032 if (p is SqlInt16) return ToSByte((SqlInt16) p);
2033 if (p is SqlInt32) return ToSByte((SqlInt32) p);
2034 if (p is SqlInt64) return ToSByte((SqlInt64) p);
2035 if (p is SqlMoney) return ToSByte((SqlMoney) p);
2036 if (p is SqlSingle) return ToSByte((SqlSingle) p);
2037 if (p is SqlString) return ToSByte((SqlString) p);
2038 }
2039
2040 #endif
2041
2042 if (p is IConvertible) return ((IConvertible)p).ToSByte(null);
2043
2044 throw CreateInvalidCastException(p.GetType(), typeof(SByte));
2045 }
2046
2047 #endregion
2048
2049 #region Single
2050
2051 // Simple Types
2052 //
2053 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Single</c> value.</summary>
2054 public static Single ToSingle(Boolean p) { return p ? (Single)1 : (Single)0; }
2055 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Single</c> value.</summary>
2056 public static Single ToSingle(Byte p) { return p; }
2057 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Single</c> value.</summary>
2058 public static Single ToSingle(Char p) { return p; }
2059 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Single</c> value.</summary>
2060 public static Single ToSingle(Decimal p) { return checked((Single)p); }
2061 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Single</c> value.</summary>
2062 public static Single ToSingle(Double p) { return checked((Single)p); }
2063 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Single</c> value.</summary>
2064 public static Single ToSingle(Int16 p) { return p; }
2065 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Single</c> value.</summary>
2066 public static Single ToSingle(Int32 p) { return p; }
2067 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Single</c> value.</summary>
2068 public static Single ToSingle(Int64 p) { return p; }
2069 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Single</c> value.</summary>
2070 [CLSCompliant(false)]
2071 public static Single ToSingle(SByte p) { return p; }
2072 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Single</c> value.</summary>
2073 public static Single ToSingle(String p) { return p == null? Configuration.NullableValues.Single : Single.Parse(p); }
2074 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Single</c> value.</summary>
2075 [CLSCompliant(false)]
2076 public static Single ToSingle(UInt16 p) { return p; }
2077 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Single</c> value.</summary>
2078 [CLSCompliant(false)]
2079 public static Single ToSingle(UInt32 p) { return p; }
2080 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Single</c> value.</summary>
2081 [CLSCompliant(false)]
2082 public static Single ToSingle(UInt64 p) { return p; }
2083
2084 // Nullable Types
2085 //
2086 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Single</c> value.</summary>
2087 public static Single ToSingle(Boolean? p) { return p.HasValue && p.Value ? (Single)1: (Single)0; }
2088 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Single</c> value.</summary>
2089 public static Single ToSingle(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2090 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Single</c> value.</summary>
2091 public static Single ToSingle(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2092 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Single</c> value.</summary>
2093 public static Single ToSingle(Decimal? p) { return p.HasValue ? checked((Single)p.Value) : Configuration.NullableValues.Single; }
2094 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Single</c> value.</summary>
2095 public static Single ToSingle(Double? p) { return p.HasValue ? checked((Single)p.Value) : Configuration.NullableValues.Single; }
2096 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Single</c> value.</summary>
2097 public static Single ToSingle(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2098 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Single</c> value.</summary>
2099 public static Single ToSingle(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2100 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Single</c> value.</summary>
2101 public static Single ToSingle(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2102 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Single</c> value.</summary>
2103 [CLSCompliant(false)]
2104 public static Single ToSingle(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2105 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Single</c> value.</summary>
2106 public static Single ToSingle(Single? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2107 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Single</c> value.</summary>
2108 [CLSCompliant(false)]
2109 public static Single ToSingle(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2110 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Single</c> value.</summary>
2111 [CLSCompliant(false)]
2112 public static Single ToSingle(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2113 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Single</c> value.</summary>
2114 [CLSCompliant(false)]
2115 public static Single ToSingle(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
2116
2117 // Other Types
2118 //
2119 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Single</c> value.</summary>
2120 public static Single ToSingle(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Single : BitConverter.ToSingle(p.ToArray(), 0); }
2121 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Single</c> value.</summary>
2122 public static Single ToSingle(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Single : BitConverter.ToSingle(p, 0); }
2123
2124 #if !SILVERLIGHT
2125
2126 // Sql Types
2127 //
2128 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Single</c> value.</summary>
2129 public static Single ToSingle(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
2130 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Single</c> value.</summary>
2131 public static Single ToSingle(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
2132 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Single</c> value.</summary>
2133 public static Single ToSingle(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
2134 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Single</c> value.</summary>
2135 public static Single ToSingle(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
2136 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Single</c> value.</summary>
2137 public static Single ToSingle(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
2138 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Single</c> value.</summary>
2139 public static Single ToSingle(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
2140 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Single</c> value.</summary>
2141 public static Single ToSingle(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
2142 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Single</c> value.</summary>
2143 public static Single ToSingle(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
2144 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Single</c> value.</summary>
2145 public static Single ToSingle(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
2146 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Single</c> value.</summary>
2147 public static Single ToSingle(SqlString p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
2148
2149 #endif
2150
2151 // From Object
2152 //
2153 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Single</c> value.</summary>
2154 public static Single ToSingle(object p)
2155 {
2156 if (p == null) return Configuration.NullableValues.Single;
2157
2158 var type = p.GetType();
2159
2160 // Primitive types
2161 //
2162 switch (Type.GetTypeCode(type))
2163 {
2164 case TypeCode.DBNull : return Configuration.NullableValues.Single;
2165 case TypeCode.Single : return (Single)p;
2166 case TypeCode.SByte : return ToSingle((SByte) p);
2167 case TypeCode.Int16 : return ToSingle((Int16) p);
2168 case TypeCode.Int32 : return ToSingle((Int32) p);
2169 case TypeCode.Int64 : return ToSingle((Int64) p);
2170 case TypeCode.Byte : return ToSingle((Byte) p);
2171 case TypeCode.UInt16 : return ToSingle((UInt16) p);
2172 case TypeCode.UInt32 : return ToSingle((UInt32) p);
2173 case TypeCode.Char : return ToSingle((Char) p);
2174 case TypeCode.UInt64 : return ToSingle((UInt64) p);
2175 case TypeCode.Double : return ToSingle((Double) p);
2176 case TypeCode.Decimal : return ToSingle((Decimal)p);
2177 case TypeCode.String : return ToSingle((String) p);
2178 case TypeCode.Boolean : return ToSingle((Boolean)p);
2179 }
2180
2181 // Nullable Types
2182 //
2183 if (type.IsGenericType)
2184 {
2185 if (p is Boolean?) return ToSingle((Boolean?) p);
2186 if (p is Byte?) return ToSingle((Byte?) p);
2187 if (p is Char?) return ToSingle((Char?) p);
2188 if (p is Decimal?) return ToSingle((Decimal?) p);
2189 if (p is Double?) return ToSingle((Double?) p);
2190 if (p is Int16?) return ToSingle((Int16?) p);
2191 if (p is Int32?) return ToSingle((Int32?) p);
2192 if (p is Int64?) return ToSingle((Int64?) p);
2193 if (p is SByte?) return ToSingle((SByte?) p);
2194 if (p is Single?) return ToSingle((Single?) p);
2195 if (p is UInt16?) return ToSingle((UInt16?) p);
2196 if (p is UInt32?) return ToSingle((UInt32?) p);
2197 if (p is UInt64?) return ToSingle((UInt64?) p);
2198 }
2199
2200 // Other Types
2201 //
2202 if (p is Binary) return ToSingle((Binary) p);
2203 if (p is Byte[]) return ToSingle((Byte[]) p);
2204
2205 #if !SILVERLIGHT
2206
2207 // Sql Types
2208 //
2209 if (p is INullable)
2210 {
2211 if (p is SqlBoolean) return ToSingle((SqlBoolean)p);
2212 if (p is SqlByte) return ToSingle((SqlByte) p);
2213 if (p is SqlDecimal) return ToSingle((SqlDecimal)p);
2214 if (p is SqlDouble) return ToSingle((SqlDouble) p);
2215 if (p is SqlInt16) return ToSingle((SqlInt16) p);
2216 if (p is SqlInt32) return ToSingle((SqlInt32) p);
2217 if (p is SqlInt64) return ToSingle((SqlInt64) p);
2218 if (p is SqlMoney) return ToSingle((SqlMoney) p);
2219 if (p is SqlSingle) return ToSingle((SqlSingle) p);
2220 if (p is SqlString) return ToSingle((SqlString) p);
2221 }
2222
2223 #endif
2224
2225 if (p is IConvertible) return ((IConvertible)p).ToSingle(null);
2226
2227 throw CreateInvalidCastException(p.GetType(), typeof(Single));
2228 }
2229
2230 #endregion
2231
2232 #region String
2233
2234 // Simple Types
2235 //
2236 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>String</c> value.</summary>
2237 public static String ToString(Boolean p) { return p.ToString(); }
2238 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>String</c> value.</summary>
2239 public static String ToString(Byte p) { return p.ToString(); }
2240 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>String</c> value.</summary>
2241 public static String ToString(Char p) { return p.ToString(); }
2242 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>String</c> value.</summary>
2243 public static String ToString(DateTime p) { return p.ToString(); }
2244 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>String</c> value.</summary>
2245 public static String ToString(DateTimeOffset p) { return p.ToString(); }
2246 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>String</c> value.</summary>
2247 public static String ToString(Decimal p) { return p.ToString(); }
2248 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>String</c> value.</summary>
2249 public static String ToString(Double p) { return p.ToString(); }
2250 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>String</c> value.</summary>
2251 public static String ToString(Guid p) { return p.ToString(); }
2252 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>String</c> value.</summary>
2253 public static String ToString(Int16 p) { return p.ToString(); }
2254 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>String</c> value.</summary>
2255 public static String ToString(Int32 p) { return p.ToString(); }
2256 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>String</c> value.</summary>
2257 public static String ToString(Int64 p) { return p.ToString(); }
2258 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>String</c> value.</summary>
2259 [CLSCompliant(false)]
2260 public static String ToString(SByte p) { return p.ToString(); }
2261 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>String</c> value.</summary>
2262 public static String ToString(Single p) { return p.ToString(); }
2263 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>String</c> value.</summary>
2264 public static String ToString(TimeSpan p) { return p.ToString(); }
2265 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>String</c> value.</summary>
2266 [CLSCompliant(false)]
2267 public static String ToString(UInt16 p) { return p.ToString(); }
2268 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>String</c> value.</summary>
2269 [CLSCompliant(false)]
2270 public static String ToString(UInt32 p) { return p.ToString(); }
2271 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>String</c> value.</summary>
2272 [CLSCompliant(false)]
2273 public static String ToString(UInt64 p) { return p.ToString(); }
2274
2275 // Nullable Types
2276 //
2277 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>String</c> value.</summary>
2278 public static String ToString(Boolean? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2279 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>String</c> value.</summary>
2280 public static String ToString(Byte? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2281 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>String</c> value.</summary>
2282 public static String ToString(Char? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2283 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>String</c> value.</summary>
2284 public static String ToString(DateTime? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2285 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>String</c> value.</summary>
2286 public static String ToString(DateTimeOffset? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2287 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>String</c> value.</summary>
2288 public static String ToString(Decimal? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2289 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>String</c> value.</summary>
2290 public static String ToString(Double? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2291 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>String</c> value.</summary>
2292 public static String ToString(Guid? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2293 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>String</c> value.</summary>
2294 public static String ToString(Int16? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2295 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>String</c> value.</summary>
2296 public static String ToString(Int32? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2297 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>String</c> value.</summary>
2298 public static String ToString(Int64? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2299 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>String</c> value.</summary>
2300 [CLSCompliant(false)]
2301 public static String ToString(SByte? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2302 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>String</c> value.</summary>
2303 public static String ToString(Single? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2304 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>String</c> value.</summary>
2305 public static String ToString(TimeSpan? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2306 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>String</c> value.</summary>
2307 [CLSCompliant(false)]
2308 public static String ToString(UInt16? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2309 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>String</c> value.</summary>
2310 [CLSCompliant(false)]
2311 public static String ToString(UInt32? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2312 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>String</c> value.</summary>
2313 [CLSCompliant(false)]
2314 public static String ToString(UInt64? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
2315
2316 // Other Types
2317 //
2318 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>String</c> value.</summary>
2319 public static String ToString(Binary p) { return ToString(p.ToArray()); }
2320 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>String</c> value.</summary>
2321 public static String ToString(Byte[] p) { return p == null ? Configuration.NullableValues.String : System.Text.Encoding.UTF8.GetString(p, 0, p.Length); }
2322 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>String</c> value.</summary>
2323 public static String ToString(Type p) { return p == null ? Configuration.NullableValues.String : p.FullName; }
2324
2325 #if !SILVERLIGHT
2326
2327 // Sql Types
2328 //
2329 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>String</c> value.</summary>
2330 public static String ToString(SqlBoolean p) { return p.ToString(); }
2331 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>String</c> value.</summary>
2332 public static String ToString(SqlByte p) { return p.ToString(); }
2333 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>String</c> value.</summary>
2334 public static String ToString(SqlChars p) { return p.IsNull ? Configuration.NullableValues.String : p.ToSqlString().Value; }
2335 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>String</c> value.</summary>
2336 public static String ToString(SqlDecimal p) { return p.ToString(); }
2337 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>String</c> value.</summary>
2338 public static String ToString(SqlDouble p) { return p.ToString(); }
2339 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>String</c> value.</summary>
2340 public static String ToString(SqlGuid p) { return p.ToString(); }
2341 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>String</c> value.</summary>
2342 public static String ToString(SqlInt16 p) { return p.ToString(); }
2343 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>String</c> value.</summary>
2344 public static String ToString(SqlInt32 p) { return p.ToString(); }
2345 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>String</c> value.</summary>
2346 public static String ToString(SqlInt64 p) { return p.ToString(); }
2347 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>String</c> value.</summary>
2348 public static String ToString(SqlMoney p) { return p.ToString(); }
2349 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>String</c> value.</summary>
2350 public static String ToString(SqlSingle p) { return p.ToString(); }
2351 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>String</c> value.</summary>
2352 public static String ToString(SqlString p) { return p.ToString(); }
2353 /// <summary>Converts the value from <c>SqlXml</c> to an equivalent <c>String</c> value.</summary>
2354 public static String ToString(SqlXml p) { return p.IsNull ? Configuration.NullableValues.String : p.Value; }
2355
2356 // Other Types
2357 //
2358 /// <summary>Converts the value from <c>XElement</c> to an equivalent <c>String</c> value.</summary>
2359 public static String ToString(XElement p) { return p == null ? Configuration.NullableValues.String : p.ToString(); }
2360 /// <summary>Converts the value from <c>XmlDocument</c> to an equivalent <c>String</c> value.</summary>
2361 public static String ToString(XmlDocument p) { return p == null ? Configuration.NullableValues.String : p.InnerXml; }
2362
2363 #endif
2364
2365 // From Object
2366 //
2367 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>String</c> value.</summary>
2368 public static String ToString(object p)
2369 {
2370 if (p == null) return Configuration.NullableValues.String;
2371
2372 var type = p.GetType();
2373
2374 // Primitive types
2375 //
2376 switch (Type.GetTypeCode(type))
2377 {
2378 case TypeCode.DBNull : return Configuration.NullableValues.String;
2379 case TypeCode.String : return (String)p;
2380 case TypeCode.SByte : return ToString((SByte) p);
2381 case TypeCode.Int16 : return ToString((Int16) p);
2382 case TypeCode.Int32 : return ToString((Int32) p);
2383 case TypeCode.Int64 : return ToString((Int64) p);
2384 case TypeCode.Byte : return ToString((Byte) p);
2385 case TypeCode.UInt16 : return ToString((UInt16) p);
2386 case TypeCode.UInt32 : return ToString((UInt32) p);
2387 case TypeCode.UInt64 : return ToString((UInt64) p);
2388 case TypeCode.Single : return ToString((Single) p);
2389 case TypeCode.Double : return ToString((Double) p);
2390 case TypeCode.Boolean : return ToString((Boolean) p);
2391 case TypeCode.Decimal : return ToString((Decimal) p);
2392 case TypeCode.Char : return ToString((Char) p);
2393 case TypeCode.DateTime : return ToString((DateTime)p);
2394 }
2395
2396 // Simple Types
2397 //
2398 if (p is DateTimeOffset) return ToString((DateTimeOffset) p);
2399 if (p is Guid) return ToString((Guid) p);
2400 if (p is TimeSpan) return ToString((TimeSpan) p);
2401
2402 // Nullable Types
2403 //
2404 if (type.IsGenericType)
2405 {
2406 if (p is Boolean?) return ToString((Boolean?) p);
2407 if (p is Byte?) return ToString((Byte?) p);
2408 if (p is Char?) return ToString((Char?) p);
2409 if (p is DateTime?) return ToString((DateTime?) p);
2410 if (p is DateTimeOffset?) return ToString((DateTimeOffset?)p);
2411 if (p is Decimal?) return ToString((Decimal?) p);
2412 if (p is Double?) return ToString((Double?) p);
2413 if (p is Guid?) return ToString((Guid?) p);
2414 if (p is Int16?) return ToString((Int16?) p);
2415 if (p is Int32?) return ToString((Int32?) p);
2416 if (p is Int64?) return ToString((Int64?) p);
2417 if (p is SByte?) return ToString((SByte?) p);
2418 if (p is Single?) return ToString((Single?) p);
2419 if (p is TimeSpan?) return ToString((TimeSpan?) p);
2420 if (p is UInt16?) return ToString((UInt16?) p);
2421 if (p is UInt32?) return ToString((UInt32?) p);
2422 if (p is UInt64?) return ToString((UInt64?) p);
2423 }
2424
2425 // Other Types
2426 //
2427 if (p is Binary) return ToString((Binary) p);
2428 if (p is Byte[]) return ToString((Byte[]) p);
2429 if (p is Type) return ToString((Type) p);
2430
2431 #if !SILVERLIGHT
2432
2433 // Sql Types
2434 //
2435 if (p is INullable)
2436 {
2437 if (p is SqlBoolean) return ToString((SqlBoolean) p);
2438 if (p is SqlByte) return ToString((SqlByte) p);
2439 if (p is SqlChars) return ToString((SqlChars) p);
2440 if (p is SqlDecimal) return ToString((SqlDecimal) p);
2441 if (p is SqlDouble) return ToString((SqlDouble) p);
2442 if (p is SqlGuid) return ToString((SqlGuid) p);
2443 if (p is SqlInt16) return ToString((SqlInt16) p);
2444 if (p is SqlInt32) return ToString((SqlInt32) p);
2445 if (p is SqlInt64) return ToString((SqlInt64) p);
2446 if (p is SqlMoney) return ToString((SqlMoney) p);
2447 if (p is SqlSingle) return ToString((SqlSingle) p);
2448 if (p is SqlString) return ToString((SqlString) p);
2449 if (p is SqlXml) return ToString((SqlXml) p);
2450 }
2451
2452 // Other Types
2453 //
2454 if (p is XElement) return ToString((XElement) p);
2455 if (p is XmlDocument) return ToString((XmlDocument) p);
2456
2457 #endif
2458
2459 if (p is IConvertible) return ((IConvertible)p).ToString(null);
2460
2461 return p.ToString();
2462 }
2463
2464 #endregion
2465
2466 #region TimeSpan
2467
2468 // Simple Types
2469 //
2470 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>TimeSpan</c> value.</summary>
2471 public static TimeSpan ToTimeSpan(DateTime p) { return p - DateTime.MinValue; }
2472 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>TimeSpan</c> value.</summary>
2473 public static TimeSpan ToTimeSpan(DateTimeOffset p) { return p - DateTimeOffset.MinValue; }
2474 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>TimeSpan</c> value.</summary>
2475 public static TimeSpan ToTimeSpan(Double p) { return TimeSpan.FromDays (p); }
2476 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>TimeSpan</c> value.</summary>
2477 public static TimeSpan ToTimeSpan(Int64 p) { return TimeSpan.FromTicks(p); }
2478 /// <summary>Converts the value from <c>String</c> to an equivalent <c>TimeSpan</c> value.</summary>
2479 public static TimeSpan ToTimeSpan(String p) { return p == null? Configuration.NullableValues.TimeSpan : TimeSpan.Parse(p); }
2480
2481 // Nullable Types
2482 //
2483 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>TimeSpan</c> value.</summary>
2484 public static TimeSpan ToTimeSpan(DateTime? p) { return p.HasValue ? p.Value - DateTime.MinValue : Configuration.NullableValues.TimeSpan; }
2485 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>TimeSpan</c> value.</summary>
2486 public static TimeSpan ToTimeSpan(DateTimeOffset? p) { return p.HasValue ? p.Value - DateTimeOffset.MinValue : Configuration.NullableValues.TimeSpan; }
2487 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>TimeSpan</c> value.</summary>
2488 public static TimeSpan ToTimeSpan(Double? p) { return p.HasValue ? TimeSpan.FromDays (p.Value) : Configuration.NullableValues.TimeSpan; }
2489 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>TimeSpan</c> value.</summary>
2490 public static TimeSpan ToTimeSpan(Int64? p) { return p.HasValue ? TimeSpan.FromTicks(p.Value) : Configuration.NullableValues.TimeSpan; }
2491 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>TimeSpan</c> value.</summary>
2492 public static TimeSpan ToTimeSpan(TimeSpan? p) { return p.HasValue ? p.Value : Configuration.NullableValues.TimeSpan; }
2493
2494 // Other Types
2495 //
2496 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>TimeSpan</c> value.</summary>
2497 public static TimeSpan ToTimeSpan(Binary p) { return p == null || p.Length == 0? Configuration.NullableValues.TimeSpan : TimeSpan.FromTicks(ToInt64(p.ToArray())); }
2498 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>TimeSpan</c> value.</summary>
2499 public static TimeSpan ToTimeSpan(Byte[] p) { return p == null || p.Length == 0? Configuration.NullableValues.TimeSpan : TimeSpan.FromTicks(ToInt64(p)); }
2500
2501 #if !SILVERLIGHT
2502
2503 // Sql Types
2504 //
2505 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>TimeSpan</c> value.</summary>
2506 public static TimeSpan ToTimeSpan(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : p.Value - DateTime.MinValue; }
2507 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>TimeSpan</c> value.</summary>
2508 public static TimeSpan ToTimeSpan(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : TimeSpan.FromDays(p.Value); }
2509 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>TimeSpan</c> value.</summary>
2510 public static TimeSpan ToTimeSpan(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : TimeSpan.FromTicks(p.Value); }
2511 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>TimeSpan</c> value.</summary>
2512 public static TimeSpan ToTimeSpan(SqlString p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : TimeSpan.Parse(p.Value); }
2513
2514 #endif
2515
2516 // From Object
2517 //
2518 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>TimeSpan</c> value.</summary>
2519 public static TimeSpan ToTimeSpan(object p)
2520 {
2521 if (p == null) return Configuration.NullableValues.TimeSpan;
2522
2523 if (p is TimeSpan) return (TimeSpan)p;
2524
2525 var type = p.GetType();
2526
2527 // Primitive types
2528 //
2529 switch (Type.GetTypeCode(type))
2530 {
2531 case TypeCode.DBNull : return Configuration.NullableValues.TimeSpan;
2532 case TypeCode.DateTime : return ToTimeSpan((DateTime)p);
2533 case TypeCode.Int64 : return ToTimeSpan((Int64) p);
2534 case TypeCode.Double : return ToTimeSpan((Double) p);
2535 case TypeCode.String : return ToTimeSpan((String) p);
2536 }
2537
2538 // Simple Types
2539 //
2540 if (p is DateTimeOffset) return ToTimeSpan((DateTimeOffset) p);
2541
2542 // Nullable Types
2543 //
2544 if (type.IsGenericType)
2545 {
2546 if (p is DateTime?) return ToTimeSpan((DateTime?) p);
2547 if (p is DateTimeOffset?) return ToTimeSpan((DateTimeOffset?)p);
2548 if (p is Double?) return ToTimeSpan((Double?) p);
2549 if (p is Int64?) return ToTimeSpan((Int64?) p);
2550 if (p is TimeSpan?) return ToTimeSpan((TimeSpan?) p);
2551 }
2552
2553 // Other Types
2554 //
2555 if (p is Binary) return ToTimeSpan((Binary) p);
2556 if (p is Byte[]) return ToTimeSpan((Byte[]) p);
2557
2558 #if !SILVERLIGHT
2559
2560 // Sql Types
2561 //
2562 if (p is INullable)
2563 {
2564 if (p is SqlDateTime) return ToTimeSpan((SqlDateTime) p);
2565 if (p is SqlDouble) return ToTimeSpan((SqlDouble) p);
2566 if (p is SqlInt64) return ToTimeSpan((SqlInt64) p);
2567 if (p is SqlString) return ToTimeSpan((SqlString) p);
2568 }
2569
2570 #endif
2571
2572 throw CreateInvalidCastException(p.GetType(), typeof(TimeSpan));
2573 }
2574
2575 #endregion
2576
2577 #region UInt16
2578
2579 // Simple Types
2580 //
2581 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt16</c> value.</summary>
2582 [CLSCompliant(false)]
2583 public static UInt16 ToUInt16(Boolean p) { return p ? (UInt16)1 : (UInt16)0; }
2584 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt16</c> value.</summary>
2585 [CLSCompliant(false)]
2586 public static UInt16 ToUInt16(Byte p) { return p; }
2587 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt16</c> value.</summary>
2588 [CLSCompliant(false)]
2589 public static UInt16 ToUInt16(Char p) { return checked((UInt16)p); }
2590 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt16</c> value.</summary>
2591 [CLSCompliant(false)]
2592 public static UInt16 ToUInt16(Decimal p) { return checked((UInt16)p); }
2593 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt16</c> value.</summary>
2594 [CLSCompliant(false)]
2595 public static UInt16 ToUInt16(Double p) { return checked((UInt16)p); }
2596 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt16</c> value.</summary>
2597 [CLSCompliant(false)]
2598 public static UInt16 ToUInt16(Int16 p) { return checked((UInt16)p); }
2599 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt16</c> value.</summary>
2600 [CLSCompliant(false)]
2601 public static UInt16 ToUInt16(Int32 p) { return checked((UInt16)p); }
2602 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt16</c> value.</summary>
2603 [CLSCompliant(false)]
2604 public static UInt16 ToUInt16(Int64 p) { return checked((UInt16)p); }
2605 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt16</c> value.</summary>
2606 [CLSCompliant(false)]
2607 public static UInt16 ToUInt16(SByte p) { return checked((UInt16)p); }
2608 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt16</c> value.</summary>
2609 [CLSCompliant(false)]
2610 public static UInt16 ToUInt16(Single p) { return checked((UInt16)p); }
2611 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt16</c> value.</summary>
2612 [CLSCompliant(false)]
2613 public static UInt16 ToUInt16(String p) { return p == null? Configuration.NullableValues.UInt16 : UInt16.Parse(p); }
2614 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt16</c> value.</summary>
2615 [CLSCompliant(false)]
2616 public static UInt16 ToUInt16(UInt32 p) { return checked((UInt16)p); }
2617 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt16</c> value.</summary>
2618 [CLSCompliant(false)]
2619 public static UInt16 ToUInt16(UInt64 p) { return checked((UInt16)p); }
2620
2621 // Nullable Types
2622 //
2623 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt16</c> value.</summary>
2624 [CLSCompliant(false)]
2625 public static UInt16 ToUInt16(Boolean? p) { return p.HasValue && p.Value ? (UInt16)1: (UInt16)0; }
2626 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt16</c> value.</summary>
2627 [CLSCompliant(false)]
2628 public static UInt16 ToUInt16(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt16; }
2629 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt16</c> value.</summary>
2630 [CLSCompliant(false)]
2631 public static UInt16 ToUInt16(Char? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2632 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt16</c> value.</summary>
2633 [CLSCompliant(false)]
2634 public static UInt16 ToUInt16(Decimal? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2635 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt16</c> value.</summary>
2636 [CLSCompliant(false)]
2637 public static UInt16 ToUInt16(Double? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2638 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt16</c> value.</summary>
2639 [CLSCompliant(false)]
2640 public static UInt16 ToUInt16(Int16? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2641 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt16</c> value.</summary>
2642 [CLSCompliant(false)]
2643 public static UInt16 ToUInt16(Int32? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2644 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt16</c> value.</summary>
2645 [CLSCompliant(false)]
2646 public static UInt16 ToUInt16(Int64? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2647 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt16</c> value.</summary>
2648 [CLSCompliant(false)]
2649 public static UInt16 ToUInt16(SByte? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2650 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt16</c> value.</summary>
2651 [CLSCompliant(false)]
2652 public static UInt16 ToUInt16(Single? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2653 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt16</c> value.</summary>
2654 [CLSCompliant(false)]
2655 public static UInt16 ToUInt16(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt16; }
2656 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt16</c> value.</summary>
2657 [CLSCompliant(false)]
2658 public static UInt16 ToUInt16(UInt32? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2659 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt16</c> value.</summary>
2660 [CLSCompliant(false)]
2661 public static UInt16 ToUInt16(UInt64? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
2662
2663 // Other Types
2664 //
2665 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt16</c> value.</summary>
2666 [CLSCompliant(false)]
2667 public static UInt16 ToUInt16(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt16 : BitConverter.ToUInt16(p.ToArray(), 0); }
2668 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt16</c> value.</summary>
2669 [CLSCompliant(false)]
2670 public static UInt16 ToUInt16(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt16 : BitConverter.ToUInt16(p, 0); }
2671
2672 #if !SILVERLIGHT
2673
2674 // Sql Types
2675 //
2676 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt16</c> value.</summary>
2677 [CLSCompliant(false)]
2678 public static UInt16 ToUInt16(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2679 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt16</c> value.</summary>
2680 [CLSCompliant(false)]
2681 public static UInt16 ToUInt16(SqlByte p) { return p.IsNull ? Configuration.NullableValues.UInt16 : p.Value; }
2682 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt16</c> value.</summary>
2683 [CLSCompliant(false)]
2684 public static UInt16 ToUInt16(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2685 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt16</c> value.</summary>
2686 [CLSCompliant(false)]
2687 public static UInt16 ToUInt16(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2688 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt16</c> value.</summary>
2689 [CLSCompliant(false)]
2690 public static UInt16 ToUInt16(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2691 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt16</c> value.</summary>
2692 [CLSCompliant(false)]
2693 public static UInt16 ToUInt16(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2694 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt16</c> value.</summary>
2695 [CLSCompliant(false)]
2696 public static UInt16 ToUInt16(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2697 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt16</c> value.</summary>
2698 [CLSCompliant(false)]
2699 public static UInt16 ToUInt16(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2700 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt16</c> value.</summary>
2701 [CLSCompliant(false)]
2702 public static UInt16 ToUInt16(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2703 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt16</c> value.</summary>
2704 [CLSCompliant(false)]
2705 public static UInt16 ToUInt16(SqlString p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
2706
2707 #endif
2708
2709 // From Object
2710 //
2711 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt16</c> value.</summary>
2712 [CLSCompliant(false)]
2713 public static UInt16 ToUInt16(object p)
2714 {
2715 if (p == null) return Configuration.NullableValues.UInt16;
2716
2717 var type = p.GetType();
2718
2719 // Primitive types
2720 //
2721 switch (Type.GetTypeCode(type))
2722 {
2723 case TypeCode.DBNull : return Configuration.NullableValues.UInt16;
2724 case TypeCode.UInt16 : return (UInt16)p;
2725 case TypeCode.Byte : return ToUInt16((Byte) p);
2726 case TypeCode.SByte : return ToUInt16((SByte) p);
2727 case TypeCode.Int16 : return ToUInt16((Int16) p);
2728 case TypeCode.Int32 : return ToUInt16((Int32) p);
2729 case TypeCode.Int64 : return ToUInt16((Int64) p);
2730 case TypeCode.UInt32 : return ToUInt16((UInt32) p);
2731 case TypeCode.UInt64 : return ToUInt16((UInt64) p);
2732 case TypeCode.Single : return ToUInt16((Single) p);
2733 case TypeCode.Double : return ToUInt16((Double) p);
2734 case TypeCode.Decimal : return ToUInt16((Decimal)p);
2735 case TypeCode.Char : return ToUInt16((Char) p);
2736 case TypeCode.String : return ToUInt16((String) p);
2737 case TypeCode.Boolean : return ToUInt16((Boolean)p);
2738 }
2739
2740 // Nullable Types
2741 //
2742 if (type.IsGenericType)
2743 {
2744 if (p is Boolean?) return ToUInt16((Boolean?) p);
2745 if (p is Byte?) return ToUInt16((Byte?) p);
2746 if (p is Char?) return ToUInt16((Char?) p);
2747 if (p is Decimal?) return ToUInt16((Decimal?) p);
2748 if (p is Double?) return ToUInt16((Double?) p);
2749 if (p is Int16?) return ToUInt16((Int16?) p);
2750 if (p is Int32?) return ToUInt16((Int32?) p);
2751 if (p is Int64?) return ToUInt16((Int64?) p);
2752 if (p is SByte?) return ToUInt16((SByte?) p);
2753 if (p is Single?) return ToUInt16((Single?) p);
2754 if (p is UInt16?) return ToUInt16((UInt16?) p);
2755 if (p is UInt32?) return ToUInt16((UInt32?) p);
2756 if (p is UInt64?) return ToUInt16((UInt64?) p);
2757 }
2758
2759 // Other Types
2760 //
2761 if (p is Binary) return ToUInt16((Binary) p);
2762 if (p is Byte[]) return ToUInt16((Byte[]) p);
2763
2764 #if !SILVERLIGHT
2765
2766 // Sql Types
2767 //
2768 if (p is INullable)
2769 {
2770 if (p is SqlBoolean) return ToUInt16((SqlBoolean)p);
2771 if (p is SqlByte) return ToUInt16((SqlByte) p);
2772 if (p is SqlDecimal) return ToUInt16((SqlDecimal)p);
2773 if (p is SqlDouble) return ToUInt16((SqlDouble) p);
2774 if (p is SqlInt16) return ToUInt16((SqlInt16) p);
2775 if (p is SqlInt32) return ToUInt16((SqlInt32) p);
2776 if (p is SqlInt64) return ToUInt16((SqlInt64) p);
2777 if (p is SqlMoney) return ToUInt16((SqlMoney) p);
2778 if (p is SqlSingle) return ToUInt16((SqlSingle) p);
2779 if (p is SqlString) return ToUInt16((SqlString) p);
2780 }
2781
2782 #endif
2783
2784 if (p is IConvertible) return ((IConvertible)p).ToUInt16(null);
2785
2786 throw CreateInvalidCastException(p.GetType(), typeof(UInt16));
2787 }
2788
2789 #endregion
2790
2791 #region UInt32
2792
2793 // Simple Types
2794 //
2795 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt32</c> value.</summary>
2796 [CLSCompliant(false)]
2797 public static UInt32 ToUInt32(Boolean p) { return p ? (UInt32)1 : (UInt32)0; }
2798 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt32</c> value.</summary>
2799 [CLSCompliant(false)]
2800 public static UInt32 ToUInt32(Byte p) { return p; }
2801 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt32</c> value.</summary>
2802 [CLSCompliant(false)]
2803 public static UInt32 ToUInt32(Char p) { return checked((UInt32)p); }
2804 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt32</c> value.</summary>
2805 [CLSCompliant(false)]
2806 public static UInt32 ToUInt32(Decimal p) { return checked((UInt32)p); }
2807 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt32</c> value.</summary>
2808 [CLSCompliant(false)]
2809 public static UInt32 ToUInt32(Double p) { return checked((UInt32)p); }
2810 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt32</c> value.</summary>
2811 [CLSCompliant(false)]
2812 public static UInt32 ToUInt32(Int16 p) { return checked((UInt32)p); }
2813 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt32</c> value.</summary>
2814 [CLSCompliant(false)]
2815 public static UInt32 ToUInt32(Int32 p) { return checked((UInt32)p); }
2816 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt32</c> value.</summary>
2817 [CLSCompliant(false)]
2818 public static UInt32 ToUInt32(Int64 p) { return checked((UInt32)p); }
2819 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt32</c> value.</summary>
2820 [CLSCompliant(false)]
2821 public static UInt32 ToUInt32(SByte p) { return checked((UInt32)p); }
2822 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt32</c> value.</summary>
2823 [CLSCompliant(false)]
2824 public static UInt32 ToUInt32(Single p) { return checked((UInt32)p); }
2825 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt32</c> value.</summary>
2826 [CLSCompliant(false)]
2827 public static UInt32 ToUInt32(String p) { return p == null? Configuration.NullableValues.UInt32 : UInt32.Parse(p); }
2828 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt32</c> value.</summary>
2829 [CLSCompliant(false)]
2830 public static UInt32 ToUInt32(UInt16 p) { return p; }
2831 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt32</c> value.</summary>
2832 [CLSCompliant(false)]
2833 public static UInt32 ToUInt32(UInt64 p) { return checked((UInt32)p); }
2834
2835 // Nullable Types
2836 //
2837 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt32</c> value.</summary>
2838 [CLSCompliant(false)]
2839 public static UInt32 ToUInt32(Boolean? p) { return p.HasValue && p.Value ? (UInt32)1: (UInt32)0; }
2840 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt32</c> value.</summary>
2841 [CLSCompliant(false)]
2842 public static UInt32 ToUInt32(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt32; }
2843 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt32</c> value.</summary>
2844 [CLSCompliant(false)]
2845 public static UInt32 ToUInt32(Char? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2846 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt32</c> value.</summary>
2847 [CLSCompliant(false)]
2848 public static UInt32 ToUInt32(Decimal? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2849 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt32</c> value.</summary>
2850 [CLSCompliant(false)]
2851 public static UInt32 ToUInt32(Double? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2852 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt32</c> value.</summary>
2853 [CLSCompliant(false)]
2854 public static UInt32 ToUInt32(Int16? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2855 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt32</c> value.</summary>
2856 [CLSCompliant(false)]
2857 public static UInt32 ToUInt32(Int32? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2858 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt32</c> value.</summary>
2859 [CLSCompliant(false)]
2860 public static UInt32 ToUInt32(Int64? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2861 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt32</c> value.</summary>
2862 [CLSCompliant(false)]
2863 public static UInt32 ToUInt32(SByte? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2864 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt32</c> value.</summary>
2865 [CLSCompliant(false)]
2866 public static UInt32 ToUInt32(Single? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2867 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt32</c> value.</summary>
2868 [CLSCompliant(false)]
2869 public static UInt32 ToUInt32(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt32; }
2870 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt32</c> value.</summary>
2871 [CLSCompliant(false)]
2872 public static UInt32 ToUInt32(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt32; }
2873 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt32</c> value.</summary>
2874 [CLSCompliant(false)]
2875 public static UInt32 ToUInt32(UInt64? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
2876
2877 // Other Types
2878 //
2879 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt32</c> value.</summary>
2880 [CLSCompliant(false)]
2881 public static UInt32 ToUInt32(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt32 : BitConverter.ToUInt32(p.ToArray(), 0); }
2882 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt32</c> value.</summary>
2883 [CLSCompliant(false)]
2884 public static UInt32 ToUInt32(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt32 : BitConverter.ToUInt32(p, 0); }
2885
2886 #if !SILVERLIGHT
2887
2888 // Sql Types
2889 //
2890 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt32</c> value.</summary>
2891 [CLSCompliant(false)]
2892 public static UInt32 ToUInt32(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2893 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt32</c> value.</summary>
2894 [CLSCompliant(false)]
2895 public static UInt32 ToUInt32(SqlByte p) { return p.IsNull ? Configuration.NullableValues.UInt32 : p.Value; }
2896 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt32</c> value.</summary>
2897 [CLSCompliant(false)]
2898 public static UInt32 ToUInt32(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2899 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt32</c> value.</summary>
2900 [CLSCompliant(false)]
2901 public static UInt32 ToUInt32(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2902 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt32</c> value.</summary>
2903 [CLSCompliant(false)]
2904 public static UInt32 ToUInt32(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2905 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt32</c> value.</summary>
2906 [CLSCompliant(false)]
2907 public static UInt32 ToUInt32(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2908 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt32</c> value.</summary>
2909 [CLSCompliant(false)]
2910 public static UInt32 ToUInt32(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2911 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt32</c> value.</summary>
2912 [CLSCompliant(false)]
2913 public static UInt32 ToUInt32(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2914 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt32</c> value.</summary>
2915 [CLSCompliant(false)]
2916 public static UInt32 ToUInt32(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2917 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt32</c> value.</summary>
2918 [CLSCompliant(false)]
2919 public static UInt32 ToUInt32(SqlString p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
2920
2921 #endif
2922
2923 // From Object
2924 //
2925 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt32</c> value.</summary>
2926 [CLSCompliant(false)]
2927 public static UInt32 ToUInt32(object p)
2928 {
2929 if (p == null) return Configuration.NullableValues.UInt32;
2930
2931 var type = p.GetType();
2932
2933 // Primitive types
2934 //
2935 switch (Type.GetTypeCode(type))
2936 {
2937 case TypeCode.DBNull : return Configuration.NullableValues.UInt32;
2938 case TypeCode.UInt32 : return (UInt32)p;
2939 case TypeCode.Byte : return ToUInt32((Byte) p);
2940 case TypeCode.UInt16 : return ToUInt32((UInt16) p);
2941 case TypeCode.SByte : return ToUInt32((SByte) p);
2942 case TypeCode.Int16 : return ToUInt32((Int16) p);
2943 case TypeCode.Int32 : return ToUInt32((Int32) p);
2944 case TypeCode.Int64 : return ToUInt32((Int64) p);
2945 case TypeCode.UInt64 : return ToUInt32((UInt64) p);
2946 case TypeCode.Single : return ToUInt32((Single) p);
2947 case TypeCode.Double : return ToUInt32((Double) p);
2948 case TypeCode.Decimal : return ToUInt32((Decimal)p);
2949 case TypeCode.Char : return ToUInt32((Char) p);
2950 case TypeCode.String : return ToUInt32((String) p);
2951 case TypeCode.Boolean : return ToUInt32((Boolean)p);
2952 }
2953
2954 // Nullable Types
2955 //
2956 if (type.IsGenericType)
2957 {
2958 if (p is Boolean?) return ToUInt32((Boolean?) p);
2959 if (p is Byte?) return ToUInt32((Byte?) p);
2960 if (p is Char?) return ToUInt32((Char?) p);
2961 if (p is Decimal?) return ToUInt32((Decimal?) p);
2962 if (p is Double?) return ToUInt32((Double?) p);
2963 if (p is Int16?) return ToUInt32((Int16?) p);
2964 if (p is Int32?) return ToUInt32((Int32?) p);
2965 if (p is Int64?) return ToUInt32((Int64?) p);
2966 if (p is SByte?) return ToUInt32((SByte?) p);
2967 if (p is Single?) return ToUInt32((Single?) p);
2968 if (p is UInt16?) return ToUInt32((UInt16?) p);
2969 if (p is UInt32?) return ToUInt32((UInt32?) p);
2970 if (p is UInt64?) return ToUInt32((UInt64?) p);
2971 }
2972
2973 // Other Types
2974 //
2975 if (p is Binary) return ToUInt32((Binary) p);
2976 if (p is Byte[]) return ToUInt32((Byte[]) p);
2977
2978 #if !SILVERLIGHT
2979
2980 // Sql Types
2981 //
2982 if (p is INullable)
2983 {
2984 if (p is SqlBoolean) return ToUInt32((SqlBoolean)p);
2985 if (p is SqlByte) return ToUInt32((SqlByte) p);
2986 if (p is SqlDecimal) return ToUInt32((SqlDecimal)p);
2987 if (p is SqlDouble) return ToUInt32((SqlDouble) p);
2988 if (p is SqlInt16) return ToUInt32((SqlInt16) p);
2989 if (p is SqlInt32) return ToUInt32((SqlInt32) p);
2990 if (p is SqlInt64) return ToUInt32((SqlInt64) p);
2991 if (p is SqlMoney) return ToUInt32((SqlMoney) p);
2992 if (p is SqlSingle) return ToUInt32((SqlSingle) p);
2993 if (p is SqlString) return ToUInt32((SqlString) p);
2994 }
2995
2996 #endif
2997
2998 if (p is IConvertible) return ((IConvertible)p).ToUInt32(null);
2999
3000 throw CreateInvalidCastException(p.GetType(), typeof(UInt32));
3001 }
3002
3003 #endregion
3004
3005 #region UInt64
3006
3007 // Simple Types
3008 //
3009 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt64</c> value.</summary>
3010 [CLSCompliant(false)]
3011 public static UInt64 ToUInt64(Boolean p) { return p ? (UInt64)1 : (UInt64)0; }
3012 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt64</c> value.</summary>
3013 [CLSCompliant(false)]
3014 public static UInt64 ToUInt64(Byte p) { return p; }
3015 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt64</c> value.</summary>
3016 [CLSCompliant(false)]
3017 public static UInt64 ToUInt64(Char p) { return checked((UInt64)p); }
3018 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt64</c> value.</summary>
3019 [CLSCompliant(false)]
3020 public static UInt64 ToUInt64(Decimal p) { return checked((UInt64)p); }
3021 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt64</c> value.</summary>
3022 [CLSCompliant(false)]
3023 public static UInt64 ToUInt64(Double p) { return checked((UInt64)p); }
3024 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt64</c> value.</summary>
3025 [CLSCompliant(false)]
3026 public static UInt64 ToUInt64(Int16 p) { return checked((UInt64)p); }
3027 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt64</c> value.</summary>
3028 [CLSCompliant(false)]
3029 public static UInt64 ToUInt64(Int32 p) { return checked((UInt64)p); }
3030 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt64</c> value.</summary>
3031 [CLSCompliant(false)]
3032 public static UInt64 ToUInt64(Int64 p) { return checked((UInt64)p); }
3033 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt64</c> value.</summary>
3034 [CLSCompliant(false)]
3035 public static UInt64 ToUInt64(SByte p) { return checked((UInt64)p); }
3036 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt64</c> value.</summary>
3037 [CLSCompliant(false)]
3038 public static UInt64 ToUInt64(Single p) { return checked((UInt64)p); }
3039 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt64</c> value.</summary>
3040 [CLSCompliant(false)]
3041 public static UInt64 ToUInt64(String p) { return p == null? Configuration.NullableValues.UInt64 : UInt64.Parse(p); }
3042 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt64</c> value.</summary>
3043 [CLSCompliant(false)]
3044 public static UInt64 ToUInt64(UInt16 p) { return p; }
3045 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt64</c> value.</summary>
3046 [CLSCompliant(false)]
3047 public static UInt64 ToUInt64(UInt32 p) { return p; }
3048
3049 // Nullable Types
3050 //
3051 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt64</c> value.</summary>
3052 [CLSCompliant(false)]
3053 public static UInt64 ToUInt64(Boolean? p) { return p.HasValue && p.Value ? (UInt64)1: (UInt64)0; }
3054 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt64</c> value.</summary>
3055 [CLSCompliant(false)]
3056 public static UInt64 ToUInt64(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
3057 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt64</c> value.</summary>
3058 [CLSCompliant(false)]
3059 public static UInt64 ToUInt64(Char? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3060 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt64</c> value.</summary>
3061 [CLSCompliant(false)]
3062 public static UInt64 ToUInt64(Decimal? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3063 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt64</c> value.</summary>
3064 [CLSCompliant(false)]
3065 public static UInt64 ToUInt64(Double? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3066 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt64</c> value.</summary>
3067 [CLSCompliant(false)]
3068 public static UInt64 ToUInt64(Int16? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3069 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt64</c> value.</summary>
3070 [CLSCompliant(false)]
3071 public static UInt64 ToUInt64(Int32? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3072 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt64</c> value.</summary>
3073 [CLSCompliant(false)]
3074 public static UInt64 ToUInt64(Int64? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3075 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt64</c> value.</summary>
3076 [CLSCompliant(false)]
3077 public static UInt64 ToUInt64(SByte? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3078 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt64</c> value.</summary>
3079 [CLSCompliant(false)]
3080 public static UInt64 ToUInt64(Single? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
3081 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt64</c> value.</summary>
3082 [CLSCompliant(false)]
3083 public static UInt64 ToUInt64(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
3084 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt64</c> value.</summary>
3085 [CLSCompliant(false)]
3086 public static UInt64 ToUInt64(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
3087 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt64</c> value.</summary>
3088 [CLSCompliant(false)]
3089 public static UInt64 ToUInt64(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
3090
3091 // Other Types
3092 //
3093 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt64</c> value.</summary>
3094 [CLSCompliant(false)]
3095 public static UInt64 ToUInt64(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt64 : BitConverter.ToUInt64(p.ToArray(), 0); }
3096 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt64</c> value.</summary>
3097 [CLSCompliant(false)]
3098 public static UInt64 ToUInt64(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt64 : BitConverter.ToUInt64(p, 0); }
3099
3100 #if !SILVERLIGHT
3101
3102 // Sql Types
3103 //
3104 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt64</c> value.</summary>
3105 [CLSCompliant(false)]
3106 public static UInt64 ToUInt64(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3107 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt64</c> value.</summary>
3108 [CLSCompliant(false)]
3109 public static UInt64 ToUInt64(SqlByte p) { return p.IsNull ? Configuration.NullableValues.UInt64 : p.Value; }
3110 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt64</c> value.</summary>
3111 [CLSCompliant(false)]
3112 public static UInt64 ToUInt64(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3113 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt64</c> value.</summary>
3114 [CLSCompliant(false)]
3115 public static UInt64 ToUInt64(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3116 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt64</c> value.</summary>
3117 [CLSCompliant(false)]
3118 public static UInt64 ToUInt64(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3119 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt64</c> value.</summary>
3120 [CLSCompliant(false)]
3121 public static UInt64 ToUInt64(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3122 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt64</c> value.</summary>
3123 [CLSCompliant(false)]
3124 public static UInt64 ToUInt64(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3125 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt64</c> value.</summary>
3126 [CLSCompliant(false)]
3127 public static UInt64 ToUInt64(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3128 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt64</c> value.</summary>
3129 [CLSCompliant(false)]
3130 public static UInt64 ToUInt64(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3131 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt64</c> value.</summary>
3132 [CLSCompliant(false)]
3133 public static UInt64 ToUInt64(SqlString p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
3134
3135 #endif
3136
3137 // From Object
3138 //
3139 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt64</c> value.</summary>
3140 [CLSCompliant(false)]
3141 public static UInt64 ToUInt64(object p)
3142 {
3143 if (p == null) return Configuration.NullableValues.UInt64;
3144
3145 var type = p.GetType();
3146
3147 // Primitive types
3148 //
3149 switch (Type.GetTypeCode(type))
3150 {
3151 case TypeCode.DBNull : return Configuration.NullableValues.UInt64;
3152 case TypeCode.UInt64 : return (UInt64)p;
3153 case TypeCode.Byte : return ToUInt64((Byte) p);
3154 case TypeCode.UInt16 : return ToUInt64((UInt16) p);
3155 case TypeCode.UInt32 : return ToUInt64((UInt32) p);
3156 case TypeCode.SByte : return ToUInt64((SByte) p);
3157 case TypeCode.Int16 : return ToUInt64((Int16) p);
3158 case TypeCode.Int32 : return ToUInt64((Int32) p);
3159 case TypeCode.Int64 : return ToUInt64((Int64) p);
3160 case TypeCode.Single : return ToUInt64((Single) p);
3161 case TypeCode.Double : return ToUInt64((Double) p);
3162 case TypeCode.Decimal : return ToUInt64((Decimal)p);
3163 case TypeCode.Char : return ToUInt64((Char) p);
3164 case TypeCode.String : return ToUInt64((String) p);
3165 case TypeCode.Boolean : return ToUInt64((Boolean)p);
3166 }
3167
3168 // Nullable Types
3169 //
3170 if (type.IsGenericType)
3171 {
3172 if (p is Boolean?) return ToUInt64((Boolean?) p);
3173 if (p is Byte?) return ToUInt64((Byte?) p);
3174 if (p is Char?) return ToUInt64((Char?) p);
3175 if (p is Decimal?) return ToUInt64((Decimal?) p);
3176 if (p is Double?) return ToUInt64((Double?) p);
3177 if (p is Int16?) return ToUInt64((Int16?) p);
3178 if (p is Int32?) return ToUInt64((Int32?) p);
3179 if (p is Int64?) return ToUInt64((Int64?) p);
3180 if (p is SByte?) return ToUInt64((SByte?) p);
3181 if (p is Single?) return ToUInt64((Single?) p);
3182 if (p is UInt16?) return ToUInt64((UInt16?) p);
3183 if (p is UInt32?) return ToUInt64((UInt32?) p);
3184 if (p is UInt64?) return ToUInt64((UInt64?) p);
3185 }
3186
3187 // Other Types
3188 //
3189 if (p is Binary) return ToUInt64((Binary) p);
3190 if (p is Byte[]) return ToUInt64((Byte[]) p);
3191
3192 #if !SILVERLIGHT
3193
3194 // Sql Types
3195 //
3196 if (p is INullable)
3197 {
3198 if (p is SqlBoolean) return ToUInt64((SqlBoolean)p);
3199 if (p is SqlByte) return ToUInt64((SqlByte) p);
3200 if (p is SqlDecimal) return ToUInt64((SqlDecimal)p);
3201 if (p is SqlDouble) return ToUInt64((SqlDouble) p);
3202 if (p is SqlInt16) return ToUInt64((SqlInt16) p);
3203 if (p is SqlInt32) return ToUInt64((SqlInt32) p);
3204 if (p is SqlInt64) return ToUInt64((SqlInt64) p);
3205 if (p is SqlMoney) return ToUInt64((SqlMoney) p);
3206 if (p is SqlSingle) return ToUInt64((SqlSingle) p);
3207 if (p is SqlString) return ToUInt64((SqlString) p);
3208 }
3209
3210 #endif
3211
3212 if (p is IConvertible) return ((IConvertible)p).ToUInt64(null);
3213
3214 throw CreateInvalidCastException(p.GetType(), typeof(UInt64));
3215 }
3216
3217 #endregion
3218
3219 #endregion
3220
3221 #region Nullable Types
3222
3223 #region Boolean?
3224
3225 // Simple Types
3226 //
3227 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Boolean?</c> value.</summary>
3228 public static Boolean? ToNullableBoolean(Boolean p) { return p; }
3229 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Boolean?</c> value.</summary>
3230 public static Boolean? ToNullableBoolean(Byte p) { return p != 0; }
3231 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Boolean?</c> value.</summary>
3232 public static Boolean? ToNullableBoolean(Char p) { return ToBoolean(p); }
3233 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Boolean?</c> value.</summary>
3234 public static Boolean? ToNullableBoolean(Decimal p) { return p != 0; }
3235 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Boolean?</c> value.</summary>
3236 public static Boolean? ToNullableBoolean(Double p) { return p != 0; }
3237 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Boolean?</c> value.</summary>
3238 public static Boolean? ToNullableBoolean(Int16 p) { return p != 0; }
3239 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Boolean?</c> value.</summary>
3240 public static Boolean? ToNullableBoolean(Int32 p) { return p != 0; }
3241 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Boolean?</c> value.</summary>
3242 public static Boolean? ToNullableBoolean(Int64 p) { return p != 0; }
3243 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Boolean?</c> value.</summary>
3244 [CLSCompliant(false)]
3245 public static Boolean? ToNullableBoolean(SByte p) { return p != 0; }
3246 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Boolean?</c> value.</summary>
3247 public static Boolean? ToNullableBoolean(Single p) { return p != 0; }
3248 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Boolean?</c> value.</summary>
3249 public static Boolean? ToNullableBoolean(String p) { return p == null? (Boolean?)null : p.Length == 1 ? ToBoolean(p[0]) : Boolean.Parse(p); }
3250 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Boolean?</c> value.</summary>
3251 [CLSCompliant(false)]
3252 public static Boolean? ToNullableBoolean(UInt16 p) { return p != 0; }
3253 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Boolean?</c> value.</summary>
3254 [CLSCompliant(false)]
3255 public static Boolean? ToNullableBoolean(UInt32 p) { return p != 0; }
3256 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Boolean?</c> value.</summary>
3257 [CLSCompliant(false)]
3258 public static Boolean? ToNullableBoolean(UInt64 p) { return p != 0; }
3259
3260 // Nullable Types
3261 //
3262 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Boolean?</c> value.</summary>
3263 public static Boolean? ToNullableBoolean(Byte? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3264 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Boolean?</c> value.</summary>
3265 public static Boolean? ToNullableBoolean(Char? p) { return p.HasValue && ToBoolean(p.Value); }
3266 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Boolean?</c> value.</summary>
3267 public static Boolean? ToNullableBoolean(Decimal? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3268 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Boolean?</c> value.</summary>
3269 public static Boolean? ToNullableBoolean(Double? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3270 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Boolean?</c> value.</summary>
3271 public static Boolean? ToNullableBoolean(Int16? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3272 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Boolean?</c> value.</summary>
3273 public static Boolean? ToNullableBoolean(Int32? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3274 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Boolean?</c> value.</summary>
3275 public static Boolean? ToNullableBoolean(Int64? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3276 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Boolean?</c> value.</summary>
3277 [CLSCompliant(false)]
3278 public static Boolean? ToNullableBoolean(SByte? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3279 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Boolean?</c> value.</summary>
3280 public static Boolean? ToNullableBoolean(Single? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3281 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Boolean?</c> value.</summary>
3282 [CLSCompliant(false)]
3283 public static Boolean? ToNullableBoolean(UInt16? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3284 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Boolean?</c> value.</summary>
3285 [CLSCompliant(false)]
3286 public static Boolean? ToNullableBoolean(UInt32? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3287 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Boolean?</c> value.</summary>
3288 [CLSCompliant(false)]
3289 public static Boolean? ToNullableBoolean(UInt64? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
3290
3291 // Other Types
3292 //
3293 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Boolean?</c> value.</summary>
3294 public static Boolean? ToNullableBoolean(Binary p) { return p == null || p.Length == 0 ? (Boolean?)null : BitConverter.ToBoolean(p.ToArray(), 0); }
3295 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Boolean?</c> value.</summary>
3296 public static Boolean? ToNullableBoolean(Byte[] p) { return p == null || p.Length == 0 ? (Boolean?)null : BitConverter.ToBoolean(p, 0); }
3297
3298 #if !SILVERLIGHT
3299
3300 // Sql Types
3301 //
3302 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Boolean?</c> value.</summary>
3303 public static Boolean? ToNullableBoolean(SqlBoolean p) { return p.IsNull ? (Boolean?)null : p.Value; }
3304 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Boolean?</c> value.</summary>
3305 public static Boolean? ToNullableBoolean(SqlByte p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3306 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Boolean?</c> value.</summary>
3307 public static Boolean? ToNullableBoolean(SqlDecimal p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3308 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Boolean?</c> value.</summary>
3309 public static Boolean? ToNullableBoolean(SqlDouble p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3310 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Boolean?</c> value.</summary>
3311 public static Boolean? ToNullableBoolean(SqlInt16 p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3312 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Boolean?</c> value.</summary>
3313 public static Boolean? ToNullableBoolean(SqlInt32 p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3314 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Boolean?</c> value.</summary>
3315 public static Boolean? ToNullableBoolean(SqlInt64 p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3316 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Boolean?</c> value.</summary>
3317 public static Boolean? ToNullableBoolean(SqlMoney p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3318 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Boolean?</c> value.</summary>
3319 public static Boolean? ToNullableBoolean(SqlSingle p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3320 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Boolean?</c> value.</summary>
3321 public static Boolean? ToNullableBoolean(SqlString p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
3322
3323 #endif
3324
3325 // From Object
3326 //
3327 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Boolean?</c> value.</summary>
3328 public static Boolean? ToNullableBoolean(object p)
3329 {
3330 if (p == null) return null;
3331
3332 if (p is Boolean?) return (Boolean?)p;
3333
3334 var type = p.GetType();
3335
3336 // Primitive types
3337 //
3338 switch (Type.GetTypeCode(type))
3339 {
3340 case TypeCode.DBNull : return null;
3341 case TypeCode.String : return ToNullableBoolean((String) p);
3342 case TypeCode.Boolean : return ToNullableBoolean((Boolean) p);
3343 case TypeCode.Char : return ToNullableBoolean((Char) p);
3344 case TypeCode.SByte : return ToNullableBoolean((SByte) p);
3345 case TypeCode.Int16 : return ToNullableBoolean((Int16) p);
3346 case TypeCode.Int32 : return ToNullableBoolean((Int32) p);
3347 case TypeCode.Int64 : return ToNullableBoolean((Int64) p);
3348 case TypeCode.Byte : return ToNullableBoolean((Byte) p);
3349 case TypeCode.UInt16 : return ToNullableBoolean((UInt16) p);
3350 case TypeCode.UInt32 : return ToNullableBoolean((UInt32) p);
3351 case TypeCode.UInt64 : return ToNullableBoolean((UInt64) p);
3352 case TypeCode.Single : return ToNullableBoolean((Single) p);
3353 case TypeCode.Double : return ToNullableBoolean((Double) p);
3354 case TypeCode.Decimal : return ToNullableBoolean((Decimal) p);
3355 }
3356
3357 // Nullable Types
3358 //
3359 if (type.IsGenericType)
3360 {
3361 if (p is Byte?) return ToNullableBoolean((Byte?) p);
3362 if (p is Char?) return ToNullableBoolean((Char?) p);
3363 if (p is Decimal?) return ToNullableBoolean((Decimal?) p);
3364 if (p is Double?) return ToNullableBoolean((Double?) p);
3365 if (p is Int16?) return ToNullableBoolean((Int16?) p);
3366 if (p is Int32?) return ToNullableBoolean((Int32?) p);
3367 if (p is Int64?) return ToNullableBoolean((Int64?) p);
3368 if (p is SByte?) return ToNullableBoolean((SByte?) p);
3369 if (p is Single?) return ToNullableBoolean((Single?) p);
3370 if (p is UInt16?) return ToNullableBoolean((UInt16?) p);
3371 if (p is UInt32?) return ToNullableBoolean((UInt32?) p);
3372 if (p is UInt64?) return ToNullableBoolean((UInt64?) p);
3373 }
3374
3375 // Other Types
3376 //
3377 if (p is Binary) return ToNullableBoolean((Binary) p);
3378 if (p is Byte[]) return ToNullableBoolean((Byte[]) p);
3379
3380 #if !SILVERLIGHT
3381
3382 // Sql Types
3383 //
3384 if (p is INullable)
3385 {
3386 if (p is SqlBoolean) return ToNullableBoolean((SqlBoolean)p);
3387 if (p is SqlByte) return ToNullableBoolean((SqlByte) p);
3388 if (p is SqlDecimal) return ToNullableBoolean((SqlDecimal)p);
3389 if (p is SqlDouble) return ToNullableBoolean((SqlDouble) p);
3390 if (p is SqlInt16) return ToNullableBoolean((SqlInt16) p);
3391 if (p is SqlInt32) return ToNullableBoolean((SqlInt32) p);
3392 if (p is SqlInt64) return ToNullableBoolean((SqlInt64) p);
3393 if (p is SqlMoney) return ToNullableBoolean((SqlMoney) p);
3394 if (p is SqlSingle) return ToNullableBoolean((SqlSingle) p);
3395 if (p is SqlString) return ToNullableBoolean((SqlString) p);
3396 }
3397
3398 #endif
3399
3400 throw CreateInvalidCastException(p.GetType(), typeof(Boolean?));
3401 }
3402
3403 #endregion
3404
3405 #region Byte?
3406
3407 // Simple Types
3408 //
3409 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Byte?</c> value.</summary>
3410 public static Byte? ToNullableByte(Boolean p) { return p ? (Byte?)1 : (Byte?)0; }
3411 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Byte?</c> value.</summary>
3412 public static Byte? ToNullableByte(Byte p) { return p; }
3413 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Byte?</c> value.</summary>
3414 public static Byte? ToNullableByte(Char p) { return checked((Byte?)p); }
3415 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Byte?</c> value.</summary>
3416 public static Byte? ToNullableByte(Decimal p) { return checked((Byte?)p); }
3417 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Byte?</c> value.</summary>
3418 public static Byte? ToNullableByte(Double p) { return checked((Byte?)p); }
3419 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Byte?</c> value.</summary>
3420 public static Byte? ToNullableByte(Int16 p) { return checked((Byte?)p); }
3421 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Byte?</c> value.</summary>
3422 public static Byte? ToNullableByte(Int32 p) { return checked((Byte?)p); }
3423 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Byte?</c> value.</summary>
3424 public static Byte? ToNullableByte(Int64 p) { return checked((Byte?)p); }
3425 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Byte?</c> value.</summary>
3426 [CLSCompliant(false)]
3427 public static Byte? ToNullableByte(SByte p) { return checked((Byte?)p); }
3428 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Byte?</c> value.</summary>
3429 public static Byte? ToNullableByte(Single p) { return checked((Byte?)p); }
3430 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Byte?</c> value.</summary>
3431 public static Byte? ToNullableByte(String p) { return p == null? (Byte?)null : Byte.Parse(p); }
3432 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Byte?</c> value.</summary>
3433 [CLSCompliant(false)]
3434 public static Byte? ToNullableByte(UInt16 p) { return checked((Byte?)p); }
3435 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Byte?</c> value.</summary>
3436 [CLSCompliant(false)]
3437 public static Byte? ToNullableByte(UInt32 p) { return checked((Byte?)p); }
3438 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Byte?</c> value.</summary>
3439 [CLSCompliant(false)]
3440 public static Byte? ToNullableByte(UInt64 p) { return checked((Byte?)p); }
3441
3442 // Nullable Types
3443 //
3444 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Byte?</c> value.</summary>
3445 public static Byte? ToNullableByte(Boolean? p) { return p.HasValue && p.Value ? (Byte?)1: (Byte?)0; }
3446 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Byte?</c> value.</summary>
3447 public static Byte? ToNullableByte(Char? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3448 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Byte?</c> value.</summary>
3449 public static Byte? ToNullableByte(Decimal? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3450 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Byte?</c> value.</summary>
3451 public static Byte? ToNullableByte(Double? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3452 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Byte?</c> value.</summary>
3453 public static Byte? ToNullableByte(Int16? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3454 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Byte?</c> value.</summary>
3455 public static Byte? ToNullableByte(Int32? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3456 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Byte?</c> value.</summary>
3457 public static Byte? ToNullableByte(Int64? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3458 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Byte?</c> value.</summary>
3459 [CLSCompliant(false)]
3460 public static Byte? ToNullableByte(SByte? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3461 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Byte?</c> value.</summary>
3462 public static Byte? ToNullableByte(Single? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3463 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Byte?</c> value.</summary>
3464 [CLSCompliant(false)]
3465 public static Byte? ToNullableByte(UInt16? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3466 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Byte?</c> value.</summary>
3467 [CLSCompliant(false)]
3468 public static Byte? ToNullableByte(UInt32? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3469 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Byte?</c> value.</summary>
3470 [CLSCompliant(false)]
3471 public static Byte? ToNullableByte(UInt64? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
3472
3473 // Other Types
3474 //
3475 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Byte?</c> value.</summary>
3476 public static Byte? ToNullableByte(Binary p) { return p == null || p.Length == 0 ? (Byte?)null : p.ToArray()[0]; }
3477 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Byte?</c> value.</summary>
3478 public static Byte? ToNullableByte(Byte[] p) { return p == null || p.Length == 0 ? (Byte?)null : p[0]; }
3479
3480 #if !SILVERLIGHT
3481
3482 // Sql Types
3483 //
3484 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Byte?</c> value.</summary>
3485 public static Byte? ToNullableByte(SqlBoolean p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3486 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Byte?</c> value.</summary>
3487 public static Byte? ToNullableByte(SqlByte p) { return p.IsNull ? (Byte?)null : p.Value; }
3488 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Byte?</c> value.</summary>
3489 public static Byte? ToNullableByte(SqlDecimal p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3490 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Byte?</c> value.</summary>
3491 public static Byte? ToNullableByte(SqlDouble p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3492 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Byte?</c> value.</summary>
3493 public static Byte? ToNullableByte(SqlInt16 p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3494 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Byte?</c> value.</summary>
3495 public static Byte? ToNullableByte(SqlInt32 p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3496 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Byte?</c> value.</summary>
3497 public static Byte? ToNullableByte(SqlInt64 p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3498 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Byte?</c> value.</summary>
3499 public static Byte? ToNullableByte(SqlMoney p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3500 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Byte?</c> value.</summary>
3501 public static Byte? ToNullableByte(SqlSingle p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3502 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Byte?</c> value.</summary>
3503 public static Byte? ToNullableByte(SqlString p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
3504
3505 #endif
3506
3507 // From Object
3508 //
3509 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Byte?</c> value.</summary>
3510 public static Byte? ToNullableByte(object p)
3511 {
3512 if (p == null) return null;
3513
3514 if (p is Byte?) return (Byte?)p;
3515
3516 var type = p.GetType();
3517
3518 // Primitive types
3519 //
3520 switch (Type.GetTypeCode(type))
3521 {
3522 case TypeCode.DBNull : return null;
3523 case TypeCode.Byte : return ToNullableByte((Byte) p);
3524 case TypeCode.SByte : return ToNullableByte((SByte) p);
3525 case TypeCode.Int16 : return ToNullableByte((Int16) p);
3526 case TypeCode.Int32 : return ToNullableByte((Int32) p);
3527 case TypeCode.Int64 : return ToNullableByte((Int64) p);
3528 case TypeCode.UInt16 : return ToNullableByte((UInt16) p);
3529 case TypeCode.UInt32 : return ToNullableByte((UInt32) p);
3530 case TypeCode.UInt64 : return ToNullableByte((UInt64) p);
3531 case TypeCode.Single : return ToNullableByte((Single) p);
3532 case TypeCode.Double : return ToNullableByte((Double) p);
3533 case TypeCode.Decimal : return ToNullableByte((Decimal)p);
3534 case TypeCode.Char : return ToNullableByte((Char) p);
3535 case TypeCode.String : return ToNullableByte((String) p);
3536 case TypeCode.Boolean : return ToNullableByte((Boolean)p);
3537 }
3538
3539 // Nullable Types
3540 //
3541 if (type.IsGenericType)
3542 {
3543 if (p is Boolean?) return ToNullableByte((Boolean?) p);
3544 if (p is Char?) return ToNullableByte((Char?) p);
3545 if (p is Decimal?) return ToNullableByte((Decimal?) p);
3546 if (p is Double?) return ToNullableByte((Double?) p);
3547 if (p is Int16?) return ToNullableByte((Int16?) p);
3548 if (p is Int32?) return ToNullableByte((Int32?) p);
3549 if (p is Int64?) return ToNullableByte((Int64?) p);
3550 if (p is SByte?) return ToNullableByte((SByte?) p);
3551 if (p is Single?) return ToNullableByte((Single?) p);
3552 if (p is UInt16?) return ToNullableByte((UInt16?) p);
3553 if (p is UInt32?) return ToNullableByte((UInt32?) p);
3554 if (p is UInt64?) return ToNullableByte((UInt64?) p);
3555 }
3556
3557 // Other Types
3558 //
3559 if (p is Binary) return ToNullableByte((Binary) p);
3560 if (p is Byte[]) return ToNullableByte((Byte[]) p);
3561
3562 #if !SILVERLIGHT
3563
3564 // Sql Types
3565 //
3566 if (p is INullable)
3567 {
3568 if (p is SqlBoolean) return ToNullableByte((SqlBoolean)p);
3569 if (p is SqlByte) return ToNullableByte((SqlByte) p);
3570 if (p is SqlDecimal) return ToNullableByte((SqlDecimal)p);
3571 if (p is SqlDouble) return ToNullableByte((SqlDouble) p);
3572 if (p is SqlInt16) return ToNullableByte((SqlInt16) p);
3573 if (p is SqlInt32) return ToNullableByte((SqlInt32) p);
3574 if (p is SqlInt64) return ToNullableByte((SqlInt64) p);
3575 if (p is SqlMoney) return ToNullableByte((SqlMoney) p);
3576 if (p is SqlSingle) return ToNullableByte((SqlSingle) p);
3577 if (p is SqlString) return ToNullableByte((SqlString) p);
3578 }
3579
3580 #endif
3581
3582 throw CreateInvalidCastException(p.GetType(), typeof(Byte?));
3583 }
3584
3585 #endregion
3586
3587 #region Char?
3588
3589 // Simple Types
3590 //
3591 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Char?</c> value.</summary>
3592 public static Char? ToNullableChar(Boolean p) { return p ? (Char?)1 : (Char?)0; }
3593 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Char?</c> value.</summary>
3594 public static Char? ToNullableChar(Byte p) { return checked((Char?)p); }
3595 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Char?</c> value.</summary>
3596 public static Char? ToNullableChar(Char p) { return p; }
3597 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Char?</c> value.</summary>
3598 public static Char? ToNullableChar(Decimal p) { return checked((Char?)p); }
3599 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Char?</c> value.</summary>
3600 public static Char? ToNullableChar(Double p) { return checked((Char?)p); }
3601 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Char?</c> value.</summary>
3602 public static Char? ToNullableChar(Int16 p) { return checked((Char?)p); }
3603 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Char?</c> value.</summary>
3604 public static Char? ToNullableChar(Int32 p) { return checked((Char?)p); }
3605 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Char?</c> value.</summary>
3606 public static Char? ToNullableChar(Int64 p) { return checked((Char?)p); }
3607 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Char?</c> value.</summary>
3608 [CLSCompliant(false)]
3609 public static Char? ToNullableChar(SByte p) { return checked((Char?)p); }
3610 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Char?</c> value.</summary>
3611 public static Char? ToNullableChar(Single p) { return checked((Char?)p); }
3612 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Char?</c> value.</summary>
3613 public static Char? ToNullableChar(String p) { return string.IsNullOrEmpty(p)? (Char?)0 : p[0]; }
3614 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Char?</c> value.</summary>
3615 [CLSCompliant(false)]
3616 public static Char? ToNullableChar(UInt16 p) { return checked((Char?)p); }
3617 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Char?</c> value.</summary>
3618 [CLSCompliant(false)]
3619 public static Char? ToNullableChar(UInt32 p) { return checked((Char?)p); }
3620 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Char?</c> value.</summary>
3621 [CLSCompliant(false)]
3622 public static Char? ToNullableChar(UInt64 p) { return checked((Char?)p); }
3623
3624 // Nullable Types
3625 //
3626 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Char?</c> value.</summary>
3627 public static Char? ToNullableChar(Boolean? p) { return p.HasValue && p.Value ? (Char?)1: (Char?)0; }
3628 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Char?</c> value.</summary>
3629 public static Char? ToNullableChar(Byte? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3630 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Char?</c> value.</summary>
3631 public static Char? ToNullableChar(Decimal? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3632 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Char?</c> value.</summary>
3633 public static Char? ToNullableChar(Double? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3634 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Char?</c> value.</summary>
3635 public static Char? ToNullableChar(Int16? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3636 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Char?</c> value.</summary>
3637 public static Char? ToNullableChar(Int32? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3638 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Char?</c> value.</summary>
3639 public static Char? ToNullableChar(Int64? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3640 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Char?</c> value.</summary>
3641 [CLSCompliant(false)]
3642 public static Char? ToNullableChar(SByte? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3643 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Char?</c> value.</summary>
3644 public static Char? ToNullableChar(Single? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3645 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Char?</c> value.</summary>
3646 [CLSCompliant(false)]
3647 public static Char? ToNullableChar(UInt16? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3648 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Char?</c> value.</summary>
3649 [CLSCompliant(false)]
3650 public static Char? ToNullableChar(UInt32? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3651 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Char?</c> value.</summary>
3652 [CLSCompliant(false)]
3653 public static Char? ToNullableChar(UInt64? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
3654
3655 // Other Types
3656 //
3657 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Char?</c> value.</summary>
3658 public static Char? ToNullableChar(Binary p) { return p == null || p.Length == 0 ? (Char?)null : BitConverter.ToChar(p.ToArray(), 0); }
3659 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Char?</c> value.</summary>
3660 public static Char? ToNullableChar(Byte[] p) { return p == null || p.Length == 0 ? (Char?)null : BitConverter.ToChar(p, 0); }
3661
3662 #if !SILVERLIGHT
3663
3664 // Sql Types
3665 //
3666 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Char?</c> value.</summary>
3667 public static Char? ToNullableChar(SqlBoolean p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3668 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Char?</c> value.</summary>
3669 public static Char? ToNullableChar(SqlByte p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3670 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Char?</c> value.</summary>
3671 public static Char? ToNullableChar(SqlDecimal p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3672 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Char?</c> value.</summary>
3673 public static Char? ToNullableChar(SqlDouble p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3674 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Char?</c> value.</summary>
3675 public static Char? ToNullableChar(SqlInt16 p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3676 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Char?</c> value.</summary>
3677 public static Char? ToNullableChar(SqlInt32 p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3678 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Char?</c> value.</summary>
3679 public static Char? ToNullableChar(SqlInt64 p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3680 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Char?</c> value.</summary>
3681 public static Char? ToNullableChar(SqlMoney p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3682 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Char?</c> value.</summary>
3683 public static Char? ToNullableChar(SqlSingle p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3684 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Char?</c> value.</summary>
3685 public static Char? ToNullableChar(SqlString p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
3686
3687 #endif
3688
3689 // From Object
3690 //
3691 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Char?</c> value.</summary>
3692 public static Char? ToNullableChar(object p)
3693 {
3694 if (p == null) return null;
3695
3696 if (p is Char?) return (Char?)p;
3697
3698 var type = p.GetType();
3699
3700 // Primitive types
3701 //
3702 switch (Type.GetTypeCode(type))
3703 {
3704 case TypeCode.DBNull : return null;
3705 case TypeCode.Char : return ToNullableChar((Char) p);
3706 case TypeCode.SByte : return ToNullableChar((SByte) p);
3707 case TypeCode.Int16 : return ToNullableChar((Int16) p);
3708 case TypeCode.Int32 : return ToNullableChar((Int32) p);
3709 case TypeCode.Int64 : return ToNullableChar((Int64) p);
3710 case TypeCode.Byte : return ToNullableChar((Byte) p);
3711 case TypeCode.UInt16 : return ToNullableChar((UInt16) p);
3712 case TypeCode.UInt32 : return ToNullableChar((UInt32) p);
3713 case TypeCode.UInt64 : return ToNullableChar((UInt64) p);
3714 case TypeCode.Single : return ToNullableChar((Single) p);
3715 case TypeCode.Double : return ToNullableChar((Double) p);
3716 case TypeCode.Decimal : return ToNullableChar((Decimal)p);
3717 case TypeCode.String : return ToNullableChar((String) p);
3718 case TypeCode.Boolean : return ToNullableChar((Boolean)p);
3719 }
3720
3721 // Nullable Types
3722 //
3723 if (type.IsGenericType)
3724 {
3725 if (p is Boolean?) return ToNullableChar((Boolean?) p);
3726 if (p is Byte?) return ToNullableChar((Byte?) p);
3727 if (p is Decimal?) return ToNullableChar((Decimal?) p);
3728 if (p is Double?) return ToNullableChar((Double?) p);
3729 if (p is Int16?) return ToNullableChar((Int16?) p);
3730 if (p is Int32?) return ToNullableChar((Int32?) p);
3731 if (p is Int64?) return ToNullableChar((Int64?) p);
3732 if (p is SByte?) return ToNullableChar((SByte?) p);
3733 if (p is Single?) return ToNullableChar((Single?) p);
3734 if (p is UInt16?) return ToNullableChar((UInt16?) p);
3735 if (p is UInt32?) return ToNullableChar((UInt32?) p);
3736 if (p is UInt64?) return ToNullableChar((UInt64?) p);
3737 }
3738
3739 // Other Types
3740 //
3741 if (p is Binary) return ToNullableChar((Binary) p);
3742 if (p is Byte[]) return ToNullableChar((Byte[]) p);
3743
3744 #if !SILVERLIGHT
3745
3746 // Sql Types
3747 //
3748 if (p is INullable)
3749 {
3750 if (p is SqlBoolean) return ToNullableChar((SqlBoolean)p);
3751 if (p is SqlByte) return ToNullableChar((SqlByte) p);
3752 if (p is SqlDecimal) return ToNullableChar((SqlDecimal)p);
3753 if (p is SqlDouble) return ToNullableChar((SqlDouble) p);
3754 if (p is SqlInt16) return ToNullableChar((SqlInt16) p);
3755 if (p is SqlInt32) return ToNullableChar((SqlInt32) p);
3756 if (p is SqlInt64) return ToNullableChar((SqlInt64) p);
3757 if (p is SqlMoney) return ToNullableChar((SqlMoney) p);
3758 if (p is SqlSingle) return ToNullableChar((SqlSingle) p);
3759 if (p is SqlString) return ToNullableChar((SqlString) p);
3760 }
3761
3762 #endif
3763
3764 throw CreateInvalidCastException(p.GetType(), typeof(Char?));
3765 }
3766
3767 #endregion
3768
3769 #region DateTime?
3770
3771 // Simple Types
3772 //
3773 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>DateTime?</c> value.</summary>
3774 public static DateTime? ToNullableDateTime(DateTime p) { return p; }
3775 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>DateTime?</c> value.</summary>
3776 public static DateTime? ToNullableDateTime(DateTimeOffset p) { return p.LocalDateTime; }
3777 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTime?</c> value.</summary>
3778 public static DateTime? ToNullableDateTime(Double p) { return DateTime.MinValue + TimeSpan.FromDays (p); }
3779 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTime?</c> value.</summary>
3780 public static DateTime? ToNullableDateTime(Int64 p) { return DateTime.MinValue + TimeSpan.FromTicks(p); }
3781 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTime?</c> value.</summary>
3782 public static DateTime? ToNullableDateTime(String p) { return p == null ? (DateTime?)null : DateTime.Parse(p, null, DateTimeStyles.NoCurrentDateDefault); }
3783 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTime?</c> value.</summary>
3784 public static DateTime? ToNullableDateTime(TimeSpan p) { return DateTime.MinValue + p; }
3785
3786 // Nullable Types
3787 //
3788 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>DateTime?</c> value.</summary>
3789 public static DateTime? ToNullableDateTime(DateTimeOffset? p) { return p.HasValue ? p.Value.LocalDateTime : (DateTime?)null; }
3790 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTime?</c> value.</summary>
3791 public static DateTime? ToNullableDateTime(Double? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromDays (p.Value): (DateTime?)null; }
3792 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTime?</c> value.</summary>
3793 public static DateTime? ToNullableDateTime(Int64? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromTicks(p.Value): (DateTime?)null; }
3794 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTime?</c> value.</summary>
3795 public static DateTime? ToNullableDateTime(TimeSpan? p) { return p.HasValue ? DateTime.MinValue + p.Value : (DateTime?)null; }
3796
3797 // Other Types
3798 //
3799 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTime?</c> value.</summary>
3800 public static DateTime? ToNullableDateTime(Binary p) { return p == null || p.Length == 0 ? (DateTime?)null : DateTime.FromBinary(ToInt64(p.ToArray())); }
3801 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTime?</c> value.</summary>
3802 public static DateTime? ToNullableDateTime(Byte[] p) { return p == null || p.Length == 0 ? (DateTime?)null : DateTime.FromBinary(ToInt64(p)); }
3803
3804 #if !SILVERLIGHT
3805
3806 // Sql Types
3807 //
3808 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTime?</c> value.</summary>
3809 public static DateTime? ToNullableDateTime(SqlDateTime p) { return p.IsNull ? (DateTime?)null : p.Value; }
3810 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTime?</c> value.</summary>
3811 public static DateTime? ToNullableDateTime(SqlDouble p) { return p.IsNull ? (DateTime?)null : DateTime.MinValue + TimeSpan.FromDays (p.Value); }
3812 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTime?</c> value.</summary>
3813 public static DateTime? ToNullableDateTime(SqlInt64 p) { return p.IsNull ? (DateTime?)null : DateTime.MinValue + TimeSpan.FromTicks(p.Value); }
3814 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTime?</c> value.</summary>
3815 public static DateTime? ToNullableDateTime(SqlString p) { return p.IsNull ? (DateTime?)null : ToDateTime(p.Value); }
3816
3817 #endif
3818
3819 // From Object
3820 //
3821 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTime?</c> value.</summary>
3822 public static DateTime? ToNullableDateTime(object p)
3823 {
3824 if (p == null) return null;
3825
3826 if (p is DateTime?) return (DateTime?)p;
3827
3828 var type = p.GetType();
3829
3830 // Primitive types
3831 //
3832 switch (Type.GetTypeCode(type))
3833 {
3834 case TypeCode.DBNull : return null;
3835 case TypeCode.DateTime : return ToNullableDateTime((DateTime) p);
3836 case TypeCode.String : return ToNullableDateTime((String) p);
3837 case TypeCode.Int64 : return ToNullableDateTime((Int64) p);
3838 case TypeCode.Double : return ToNullableDateTime((Double) p);
3839 }
3840
3841 // Simple Types
3842 //
3843 if (p is DateTimeOffset) return ToNullableDateTime((DateTimeOffset) p);
3844 if (p is TimeSpan) return ToNullableDateTime((TimeSpan) p);
3845
3846 // Nullable Types
3847 //
3848 if (type.IsGenericType)
3849 {
3850 if (p is DateTimeOffset?) return ToNullableDateTime((DateTimeOffset?)p);
3851 if (p is Double?) return ToNullableDateTime((Double?) p);
3852 if (p is Int64?) return ToNullableDateTime((Int64?) p);
3853 if (p is TimeSpan?) return ToNullableDateTime((TimeSpan?) p);
3854 }
3855
3856 // Other Types
3857 //
3858 if (p is Binary) return ToNullableDateTime((Binary) p);
3859 if (p is Byte[]) return ToNullableDateTime((Byte[]) p);
3860
3861 #if !SILVERLIGHT
3862
3863 // Sql Types
3864 //
3865 if (p is INullable)
3866 {
3867 if (p is SqlDateTime) return ToNullableDateTime((SqlDateTime) p);
3868 if (p is SqlDouble) return ToNullableDateTime((SqlDouble) p);
3869 if (p is SqlInt64) return ToNullableDateTime((SqlInt64) p);
3870 if (p is SqlString) return ToNullableDateTime((SqlString) p);
3871 }
3872
3873 #endif
3874
3875 throw CreateInvalidCastException(p.GetType(), typeof(DateTime?));
3876 }
3877
3878 #endregion
3879
3880 #region DateTimeOffset?
3881
3882 // Simple Types
3883 //
3884 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3885 public static DateTimeOffset? ToNullableDateTimeOffset(DateTime p) { return p; }
3886 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3887 public static DateTimeOffset? ToNullableDateTimeOffset(DateTimeOffset p) { return p; }
3888 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3889 public static DateTimeOffset? ToNullableDateTimeOffset(Double p) { return DateTimeOffset.MinValue + TimeSpan.FromDays (p); }
3890 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3891 public static DateTimeOffset? ToNullableDateTimeOffset(Int64 p) { return DateTimeOffset.MinValue + TimeSpan.FromTicks(p); }
3892 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3893 public static DateTimeOffset? ToNullableDateTimeOffset(String p) { return p == null? (DateTimeOffset?)null : DateTimeOffset.Parse(p); }
3894 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3895 public static DateTimeOffset? ToNullableDateTimeOffset(TimeSpan p) { return DateTimeOffset.MinValue + p; }
3896
3897 // Nullable Types
3898 //
3899 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3900 public static DateTimeOffset? ToNullableDateTimeOffset(DateTime? p) { return p.HasValue ? p.Value : (DateTimeOffset?)null; }
3901 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3902 public static DateTimeOffset? ToNullableDateTimeOffset(Double? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value): (DateTimeOffset?)null; }
3903 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3904 public static DateTimeOffset? ToNullableDateTimeOffset(Int64? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value): (DateTimeOffset?)null; }
3905 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3906 public static DateTimeOffset? ToNullableDateTimeOffset(TimeSpan? p) { return p.HasValue ? DateTimeOffset.MinValue + p.Value : (DateTimeOffset?)null; }
3907
3908 // Other Types
3909 //
3910 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3911 public static DateTimeOffset? ToNullableDateTimeOffset(Binary p) { return p == null || p.Length == 0 ? (DateTimeOffset?)null : new DateTimeOffset?(ToDateTime(p.ToArray())); }
3912 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3913 public static DateTimeOffset? ToNullableDateTimeOffset(Byte[] p) { return p == null || p.Length == 0 ? (DateTimeOffset?)null : new DateTimeOffset?(ToDateTime(p)); }
3914
3915 #if !SILVERLIGHT
3916
3917 // Sql Types
3918 //
3919 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3920 public static DateTimeOffset? ToNullableDateTimeOffset(SqlDateTime p) { return p.IsNull ? (DateTimeOffset?)null : p.Value; }
3921 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3922 public static DateTimeOffset? ToNullableDateTimeOffset(SqlDouble p) { return p.IsNull ? (DateTimeOffset?)null : DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value); }
3923 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3924 public static DateTimeOffset? ToNullableDateTimeOffset(SqlInt64 p) { return p.IsNull ? (DateTimeOffset?)null : DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value); }
3925 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3926 public static DateTimeOffset? ToNullableDateTimeOffset(SqlString p) { return p.IsNull ? (DateTimeOffset?)null : ToDateTimeOffset(p.Value); }
3927
3928 #endif
3929
3930 // From Object
3931 //
3932 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
3933 public static DateTimeOffset? ToNullableDateTimeOffset(object p)
3934 {
3935 if (p == null) return null;
3936
3937 if (p is DateTimeOffset?) return (DateTimeOffset?)p;
3938
3939 var type = p.GetType();
3940
3941 // Primitive types
3942 //
3943 switch (Type.GetTypeCode(type))
3944 {
3945 case TypeCode.DBNull : return null;
3946 case TypeCode.Int64 : return ToNullableDateTimeOffset((Int64) p);
3947 case TypeCode.Double : return ToNullableDateTimeOffset((Double) p);
3948 case TypeCode.DateTime : return ToNullableDateTimeOffset((DateTime) p);
3949 case TypeCode.String : return ToNullableDateTimeOffset((String) p);
3950 }
3951
3952 // Simple Types
3953 //
3954 if (p is DateTimeOffset) return ToNullableDateTimeOffset((DateTimeOffset)p);
3955 if (p is TimeSpan) return ToNullableDateTimeOffset((TimeSpan) p);
3956
3957 // Nullable Types
3958 //
3959 if (type.IsGenericType)
3960 {
3961 if (p is DateTime?) return ToNullableDateTimeOffset((DateTime?) p);
3962 if (p is Double?) return ToNullableDateTimeOffset((Double?) p);
3963 if (p is Int64?) return ToNullableDateTimeOffset((Int64?) p);
3964 if (p is TimeSpan?) return ToNullableDateTimeOffset((TimeSpan?) p);
3965 }
3966
3967 // Other Types
3968 //
3969 if (p is Binary) return ToNullableDateTimeOffset((Binary) p);
3970 if (p is Byte[]) return ToNullableDateTimeOffset((Byte[]) p);
3971
3972 #if !SILVERLIGHT
3973
3974 // Sql Types
3975 //
3976 if (p is INullable)
3977 {
3978 if (p is SqlDateTime) return ToNullableDateTimeOffset((SqlDateTime) p);
3979 if (p is SqlDouble) return ToNullableDateTimeOffset((SqlDouble) p);
3980 if (p is SqlInt64) return ToNullableDateTimeOffset((SqlInt64) p);
3981 if (p is SqlString) return ToNullableDateTimeOffset((SqlString) p);
3982 }
3983
3984 #endif
3985
3986 throw CreateInvalidCastException(p.GetType(), typeof(DateTimeOffset?));
3987 }
3988
3989 #endregion
3990
3991 #region Decimal?
3992
3993 // Simple Types
3994 //
3995 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Decimal?</c> value.</summary>
3996 public static Decimal? ToNullableDecimal(Boolean p) { return p ? (Decimal?)1 : (Decimal?)0; }
3997 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Decimal?</c> value.</summary>
3998 public static Decimal? ToNullableDecimal(Byte p) { return p; }
3999 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Decimal?</c> value.</summary>
4000 public static Decimal? ToNullableDecimal(Char p) { return p; }
4001 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Decimal?</c> value.</summary>
4002 public static Decimal? ToNullableDecimal(Decimal p) { return p; }
4003 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Decimal?</c> value.</summary>
4004 public static Decimal? ToNullableDecimal(Double p) { return checked((Decimal?)p); }
4005 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Decimal?</c> value.</summary>
4006 public static Decimal? ToNullableDecimal(Int16 p) { return p; }
4007 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Decimal?</c> value.</summary>
4008 public static Decimal? ToNullableDecimal(Int32 p) { return p; }
4009 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Decimal?</c> value.</summary>
4010 public static Decimal? ToNullableDecimal(Int64 p) { return p; }
4011 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Decimal?</c> value.</summary>
4012 [CLSCompliant(false)]
4013 public static Decimal? ToNullableDecimal(SByte p) { return p; }
4014 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Decimal?</c> value.</summary>
4015 public static Decimal? ToNullableDecimal(Single p) { return checked((Decimal?)p); }
4016 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Decimal?</c> value.</summary>
4017 public static Decimal? ToNullableDecimal(String p) { return p == null? (Decimal?)null : Decimal.Parse(p); }
4018 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Decimal?</c> value.</summary>
4019 [CLSCompliant(false)]
4020 public static Decimal? ToNullableDecimal(UInt16 p) { return p; }
4021 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Decimal?</c> value.</summary>
4022 [CLSCompliant(false)]
4023 public static Decimal? ToNullableDecimal(UInt32 p) { return p; }
4024 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Decimal?</c> value.</summary>
4025 [CLSCompliant(false)]
4026 public static Decimal? ToNullableDecimal(UInt64 p) { return p; }
4027
4028 // Nullable Types
4029 //
4030 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Decimal?</c> value.</summary>
4031 public static Decimal? ToNullableDecimal(Boolean? p) { return p.HasValue && p.Value ? (Decimal?)1: (Decimal?)0; }
4032 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Decimal?</c> value.</summary>
4033 public static Decimal? ToNullableDecimal(Byte? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4034 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Decimal?</c> value.</summary>
4035 public static Decimal? ToNullableDecimal(Char? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4036 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Decimal?</c> value.</summary>
4037 public static Decimal? ToNullableDecimal(Double? p) { return p.HasValue ? checked((Decimal?)p.Value) : (Decimal?)null; }
4038 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Decimal?</c> value.</summary>
4039 public static Decimal? ToNullableDecimal(Int16? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4040 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Decimal?</c> value.</summary>
4041 public static Decimal? ToNullableDecimal(Int32? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4042 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Decimal?</c> value.</summary>
4043 public static Decimal? ToNullableDecimal(Int64? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4044 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Decimal?</c> value.</summary>
4045 [CLSCompliant(false)]
4046 public static Decimal? ToNullableDecimal(SByte? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4047 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Decimal?</c> value.</summary>
4048 public static Decimal? ToNullableDecimal(Single? p) { return p.HasValue ? checked((Decimal?)p.Value) : (Decimal?)null; }
4049 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Decimal?</c> value.</summary>
4050 [CLSCompliant(false)]
4051 public static Decimal? ToNullableDecimal(UInt16? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4052 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Decimal?</c> value.</summary>
4053 [CLSCompliant(false)]
4054 public static Decimal? ToNullableDecimal(UInt32? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4055 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Decimal?</c> value.</summary>
4056 [CLSCompliant(false)]
4057 public static Decimal? ToNullableDecimal(UInt64? p) { return p.HasValue ? p.Value : (Decimal?)null; }
4058
4059 // Other Types
4060 //
4061 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Decimal?</c> value.</summary>
4062 public static Decimal? ToNullableDecimal(Binary p) { return p == null || p.Length == 0 ? (Decimal?)null : ToDecimal(p); }
4063 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Decimal?</c> value.</summary>
4064 public static Decimal? ToNullableDecimal(Byte[] p) { return p == null || p.Length == 0 ? (Decimal?)null : ToDecimal(p); }
4065
4066 #if !SILVERLIGHT
4067
4068 // Sql Types
4069 //
4070 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Decimal?</c> value.</summary>
4071 public static Decimal? ToNullableDecimal(SqlBoolean p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
4072 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Decimal?</c> value.</summary>
4073 public static Decimal? ToNullableDecimal(SqlByte p) { return p.IsNull ? (Decimal?)null : p.Value; }
4074 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Decimal?</c> value.</summary>
4075 public static Decimal? ToNullableDecimal(SqlDecimal p) { return p.IsNull ? (Decimal?)null : p.Value; }
4076 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Decimal?</c> value.</summary>
4077 public static Decimal? ToNullableDecimal(SqlDouble p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
4078 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Decimal?</c> value.</summary>
4079 public static Decimal? ToNullableDecimal(SqlInt16 p) { return p.IsNull ? (Decimal?)null : p.Value; }
4080 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Decimal?</c> value.</summary>
4081 public static Decimal? ToNullableDecimal(SqlInt32 p) { return p.IsNull ? (Decimal?)null : p.Value; }
4082 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Decimal?</c> value.</summary>
4083 public static Decimal? ToNullableDecimal(SqlInt64 p) { return p.IsNull ? (Decimal?)null : p.Value; }
4084 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Decimal?</c> value.</summary>
4085 public static Decimal? ToNullableDecimal(SqlMoney p) { return p.IsNull ? (Decimal?)null : p.Value; }
4086 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Decimal?</c> value.</summary>
4087 public static Decimal? ToNullableDecimal(SqlSingle p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
4088 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Decimal?</c> value.</summary>
4089 public static Decimal? ToNullableDecimal(SqlString p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
4090
4091 #endif
4092
4093 // From Object
4094 //
4095 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Decimal?</c> value.</summary>
4096 public static Decimal? ToNullableDecimal(object p)
4097 {
4098 if (p == null) return null;
4099
4100 if (p is Decimal?) return (Decimal?)p;
4101
4102 var type = p.GetType();
4103
4104 // Primitive types
4105 //
4106 switch (Type.GetTypeCode(type))
4107 {
4108 case TypeCode.DBNull : return null;
4109 case TypeCode.SByte : return ToNullableDecimal((SByte) p);
4110 case TypeCode.Int16 : return ToNullableDecimal((Int16) p);
4111 case TypeCode.Int32 : return ToNullableDecimal((Int32) p);
4112 case TypeCode.Int64 : return ToNullableDecimal((Int64) p);
4113 case TypeCode.Byte : return ToNullableDecimal((Byte) p);
4114 case TypeCode.UInt16 : return ToNullableDecimal((UInt16) p);
4115 case TypeCode.UInt32 : return ToNullableDecimal((UInt32) p);
4116 case TypeCode.Char : return ToNullableDecimal((Char) p);
4117 case TypeCode.UInt64 : return ToNullableDecimal((UInt64) p);
4118 case TypeCode.Decimal : return ToNullableDecimal((Decimal) p);
4119 case TypeCode.Single : return ToNullableDecimal((Single) p);
4120 case TypeCode.Double : return ToNullableDecimal((Double) p);
4121 case TypeCode.String : return ToNullableDecimal((String) p);
4122 case TypeCode.Boolean : return ToNullableDecimal((Boolean) p);
4123 }
4124
4125 // Nullable Types
4126 //
4127 if (type.IsGenericType)
4128 {
4129 if (p is Boolean?) return ToNullableDecimal((Boolean?) p);
4130 if (p is Byte?) return ToNullableDecimal((Byte?) p);
4131 if (p is Char?) return ToNullableDecimal((Char?) p);
4132 if (p is Double?) return ToNullableDecimal((Double?) p);
4133 if (p is Int16?) return ToNullableDecimal((Int16?) p);
4134 if (p is Int32?) return ToNullableDecimal((Int32?) p);
4135 if (p is Int64?) return ToNullableDecimal((Int64?) p);
4136 if (p is SByte?) return ToNullableDecimal((SByte?) p);
4137 if (p is Single?) return ToNullableDecimal((Single?) p);
4138 if (p is UInt16?) return ToNullableDecimal((UInt16?) p);
4139 if (p is UInt32?) return ToNullableDecimal((UInt32?) p);
4140 if (p is UInt64?) return ToNullableDecimal((UInt64?) p);
4141 }
4142
4143 // Other Types
4144 //
4145 if (p is Binary) return ToNullableDecimal((Binary) p);
4146 if (p is Byte[]) return ToNullableDecimal((Byte[]) p);
4147
4148 #if !SILVERLIGHT
4149
4150 // Sql Types
4151 //
4152 if (p is INullable)
4153 {
4154 if (p is SqlBoolean) return ToNullableDecimal((SqlBoolean)p);
4155 if (p is SqlByte) return ToNullableDecimal((SqlByte) p);
4156 if (p is SqlDecimal) return ToNullableDecimal((SqlDecimal)p);
4157 if (p is SqlDouble) return ToNullableDecimal((SqlDouble) p);
4158 if (p is SqlInt16) return ToNullableDecimal((SqlInt16) p);
4159 if (p is SqlInt32) return ToNullableDecimal((SqlInt32) p);
4160 if (p is SqlInt64) return ToNullableDecimal((SqlInt64) p);
4161 if (p is SqlMoney) return ToNullableDecimal((SqlMoney) p);
4162 if (p is SqlSingle) return ToNullableDecimal((SqlSingle) p);
4163 if (p is SqlString) return ToNullableDecimal((SqlString) p);
4164 }
4165
4166 #endif
4167
4168 throw CreateInvalidCastException(p.GetType(), typeof(Decimal?));
4169 }
4170
4171 #endregion
4172
4173 #region Double?
4174
4175 // Simple Types
4176 //
4177 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Double?</c> value.</summary>
4178 public static Double? ToNullableDouble(Boolean p) { return p ? (Double?)1 : (Double?)0; }
4179 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Double?</c> value.</summary>
4180 public static Double? ToNullableDouble(Byte p) { return p; }
4181 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Double?</c> value.</summary>
4182 public static Double? ToNullableDouble(Char p) { return p; }
4183 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Double?</c> value.</summary>
4184 public static Double? ToNullableDouble(DateTime p) { return (p - DateTime.MinValue).TotalDays; }
4185 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Double?</c> value.</summary>
4186 public static Double? ToNullableDouble(DateTimeOffset p) { return (p - DateTimeOffset.MinValue).TotalDays; }
4187 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Double?</c> value.</summary>
4188 public static Double? ToNullableDouble(Decimal p) { return checked((Double?)p); }
4189 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Double?</c> value.</summary>
4190 public static Double? ToNullableDouble(Double p) { return p; }
4191 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Double?</c> value.</summary>
4192 public static Double? ToNullableDouble(Int16 p) { return p; }
4193 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Double?</c> value.</summary>
4194 public static Double? ToNullableDouble(Int32 p) { return p; }
4195 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Double?</c> value.</summary>
4196 public static Double? ToNullableDouble(Int64 p) { return p; }
4197 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Double?</c> value.</summary>
4198 [CLSCompliant(false)]
4199 public static Double? ToNullableDouble(SByte p) { return p; }
4200 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Double?</c> value.</summary>
4201 public static Double? ToNullableDouble(Single p) { return p; }
4202 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Double?</c> value.</summary>
4203 public static Double? ToNullableDouble(String p) { return p == null? (Double?)null : Double.Parse(p); }
4204 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Double?</c> value.</summary>
4205 public static Double? ToNullableDouble(TimeSpan p) { return p.TotalDays; }
4206 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Double?</c> value.</summary>
4207 [CLSCompliant(false)]
4208 public static Double? ToNullableDouble(UInt16 p) { return p; }
4209 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Double?</c> value.</summary>
4210 [CLSCompliant(false)]
4211 public static Double? ToNullableDouble(UInt32 p) { return p; }
4212 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Double?</c> value.</summary>
4213 [CLSCompliant(false)]
4214 public static Double? ToNullableDouble(UInt64 p) { return p; }
4215
4216 // Nullable Types
4217 //
4218 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Double?</c> value.</summary>
4219 public static Double? ToNullableDouble(Boolean? p) { return p.HasValue && p.Value ? (Double?)1: (Double?)0; }
4220 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Double?</c> value.</summary>
4221 public static Double? ToNullableDouble(Byte? p) { return p.HasValue ? p.Value : (Double?)null; }
4222 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Double?</c> value.</summary>
4223 public static Double? ToNullableDouble(Char? p) { return p.HasValue ? p.Value : (Double?)null; }
4224 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Double?</c> value.</summary>
4225 public static Double? ToNullableDouble(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).TotalDays : (Double?)null; }
4226 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Double?</c> value.</summary>
4227 public static Double? ToNullableDouble(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTimeOffset.MinValue).TotalDays : (Double?)null; }
4228 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Double?</c> value.</summary>
4229 public static Double? ToNullableDouble(Decimal? p) { return p.HasValue ? checked((Double?)p.Value) : (Double?)null; }
4230 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Double?</c> value.</summary>
4231 public static Double? ToNullableDouble(Int16? p) { return p.HasValue ? p.Value : (Double?)null; }
4232 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Double?</c> value.</summary>
4233 public static Double? ToNullableDouble(Int32? p) { return p.HasValue ? p.Value : (Double?)null; }
4234 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Double?</c> value.</summary>
4235 public static Double? ToNullableDouble(Int64? p) { return p.HasValue ? p.Value : (Double?)null; }
4236 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Double?</c> value.</summary>
4237 [CLSCompliant(false)]
4238 public static Double? ToNullableDouble(SByte? p) { return p.HasValue ? p.Value : (Double?)null; }
4239 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Double?</c> value.</summary>
4240 public static Double? ToNullableDouble(Single? p) { return p.HasValue ? p.Value : (Double?)null; }
4241 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Double?</c> value.</summary>
4242 public static Double? ToNullableDouble(TimeSpan? p) { return p.HasValue ? p.Value.TotalDays : (Double?)null; }
4243 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Double?</c> value.</summary>
4244 [CLSCompliant(false)]
4245 public static Double? ToNullableDouble(UInt16? p) { return p.HasValue ? p.Value : (Double?)null; }
4246 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Double?</c> value.</summary>
4247 [CLSCompliant(false)]
4248 public static Double? ToNullableDouble(UInt32? p) { return p.HasValue ? p.Value : (Double?)null; }
4249 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Double?</c> value.</summary>
4250 [CLSCompliant(false)]
4251 public static Double? ToNullableDouble(UInt64? p) { return p.HasValue ? p.Value : (Double?)null; }
4252
4253 // Other Types
4254 //
4255 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Double?</c> value.</summary>
4256 public static Double? ToNullableDouble(Binary p) { return p == null || p.Length == 0 ? (Double?)null : BitConverter.ToDouble(p.ToArray(), 0); }
4257 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Double?</c> value.</summary>
4258 public static Double? ToNullableDouble(Byte[] p) { return p == null || p.Length == 0 ? (Double?)null : BitConverter.ToDouble(p, 0); }
4259
4260 #if !SILVERLIGHT
4261
4262 // Sql Types
4263 //
4264 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Double?</c> value.</summary>
4265 public static Double? ToNullableDouble(SqlBoolean p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
4266 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Double?</c> value.</summary>
4267 public static Double? ToNullableDouble(SqlByte p) { return p.IsNull ? (Double?)null : p.Value; }
4268 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Double?</c> value.</summary>
4269 public static Double? ToNullableDouble(SqlDateTime p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
4270 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Double?</c> value.</summary>
4271 public static Double? ToNullableDouble(SqlDecimal p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
4272 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Double?</c> value.</summary>
4273 public static Double? ToNullableDouble(SqlDouble p) { return p.IsNull ? (Double?)null : p.Value; }
4274 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Double?</c> value.</summary>
4275 public static Double? ToNullableDouble(SqlInt16 p) { return p.IsNull ? (Double?)null : p.Value; }
4276 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Double?</c> value.</summary>
4277 public static Double? ToNullableDouble(SqlInt32 p) { return p.IsNull ? (Double?)null : p.Value; }
4278 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Double?</c> value.</summary>
4279 public static Double? ToNullableDouble(SqlInt64 p) { return p.IsNull ? (Double?)null : p.Value; }
4280 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Double?</c> value.</summary>
4281 public static Double? ToNullableDouble(SqlMoney p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
4282 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Double?</c> value.</summary>
4283 public static Double? ToNullableDouble(SqlSingle p) { return p.IsNull ? (Double?)null : p.Value; }
4284 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Double?</c> value.</summary>
4285 public static Double? ToNullableDouble(SqlString p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
4286
4287 #endif
4288
4289 // From Object
4290 //
4291 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Double?</c> value.</summary>
4292 public static Double? ToNullableDouble(object p)
4293 {
4294 if (p == null) return null;
4295
4296 if (p is Double?) return (Double?)p;
4297
4298 var type = p.GetType();
4299
4300 // Primitive types
4301 //
4302 switch (Type.GetTypeCode(type))
4303 {
4304 case TypeCode.DBNull : return null;
4305 case TypeCode.DateTime : return ToNullableDouble((DateTime)p);
4306 case TypeCode.SByte : return ToNullableDouble((SByte) p);
4307 case TypeCode.Int16 : return ToNullableDouble((Int16) p);
4308 case TypeCode.Int32 : return ToNullableDouble((Int32) p);
4309 case TypeCode.Int64 : return ToNullableDouble((Int64) p);
4310 case TypeCode.Byte : return ToNullableDouble((Byte) p);
4311 case TypeCode.UInt16 : return ToNullableDouble((UInt16) p);
4312 case TypeCode.UInt32 : return ToNullableDouble((UInt32) p);
4313 case TypeCode.Char : return ToNullableDouble((Char) p);
4314 case TypeCode.UInt64 : return ToNullableDouble((UInt64) p);
4315 case TypeCode.Single : return ToNullableDouble((Single) p);
4316 case TypeCode.Double : return ToNullableDouble((Double) p);
4317 case TypeCode.Decimal : return ToNullableDouble((Decimal) p);
4318 case TypeCode.String : return ToNullableDouble((String) p);
4319 case TypeCode.Boolean : return ToNullableDouble((Boolean) p);
4320 }
4321
4322 // Simple Types
4323 //
4324 if (p is DateTimeOffset) return ToNullableDouble((DateTimeOffset) p);
4325 if (p is TimeSpan) return ToNullableDouble((TimeSpan) p);
4326
4327 // Nullable Types
4328 //
4329 if (type.IsGenericType)
4330 {
4331 if (p is Boolean?) return ToNullableDouble((Boolean?) p);
4332 if (p is Byte?) return ToNullableDouble((Byte?) p);
4333 if (p is Char?) return ToNullableDouble((Char?) p);
4334 if (p is DateTime?) return ToNullableDouble((DateTime?) p);
4335 if (p is DateTimeOffset?) return ToNullableDouble((DateTimeOffset?)p);
4336 if (p is Decimal?) return ToNullableDouble((Decimal?) p);
4337 if (p is Int16?) return ToNullableDouble((Int16?) p);
4338 if (p is Int32?) return ToNullableDouble((Int32?) p);
4339 if (p is Int64?) return ToNullableDouble((Int64?) p);
4340 if (p is SByte?) return ToNullableDouble((SByte?) p);
4341 if (p is Single?) return ToNullableDouble((Single?) p);
4342 if (p is TimeSpan?) return ToNullableDouble((TimeSpan?) p);
4343 if (p is UInt16?) return ToNullableDouble((UInt16?) p);
4344 if (p is UInt32?) return ToNullableDouble((UInt32?) p);
4345 if (p is UInt64?) return ToNullableDouble((UInt64?) p);
4346 }
4347
4348 // Other Types
4349 //
4350 if (p is Binary) return ToNullableDouble((Binary) p);
4351 if (p is Byte[]) return ToNullableDouble((Byte[]) p);
4352
4353 #if !SILVERLIGHT
4354
4355 // Sql Types
4356 //
4357 if (p is INullable)
4358 {
4359 if (p is SqlBoolean) return ToNullableDouble((SqlBoolean) p);
4360 if (p is SqlByte) return ToNullableDouble((SqlByte) p);
4361 if (p is SqlDateTime) return ToNullableDouble((SqlDateTime) p);
4362 if (p is SqlDecimal) return ToNullableDouble((SqlDecimal) p);
4363 if (p is SqlDouble) return ToNullableDouble((SqlDouble) p);
4364 if (p is SqlInt16) return ToNullableDouble((SqlInt16) p);
4365 if (p is SqlInt32) return ToNullableDouble((SqlInt32) p);
4366 if (p is SqlInt64) return ToNullableDouble((SqlInt64) p);
4367 if (p is SqlMoney) return ToNullableDouble((SqlMoney) p);
4368 if (p is SqlSingle) return ToNullableDouble((SqlSingle) p);
4369 if (p is SqlString) return ToNullableDouble((SqlString) p);
4370 }
4371
4372 #endif
4373
4374 throw CreateInvalidCastException(p.GetType(), typeof(Double?));
4375 }
4376
4377 #endregion
4378
4379 #region Guid?
4380
4381 // Simple Types
4382 //
4383 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Guid?</c> value.</summary>
4384 public static Guid? ToNullableGuid(Guid p) { return p; }
4385 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Guid?</c> value.</summary>
4386 public static Guid? ToNullableGuid(String p) { return p == null ? (Guid?)null : new Guid(p); }
4387
4388 // Other Types
4389 //
4390 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Guid?</c> value.</summary>
4391 public static Guid? ToNullableGuid(Binary p) { return p == null ? (Guid?)null : new Guid(p.ToArray()); }
4392 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Guid?</c> value.</summary>
4393 public static Guid? ToNullableGuid(Byte[] p) { return p == null ? (Guid?)null : new Guid(p); }
4394 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>Guid?</c> value.</summary>
4395 public static Guid? ToNullableGuid(Type p) { return p == null ? (Guid?)null : p.GUID; }
4396
4397 #if !SILVERLIGHT
4398
4399 // Sql Types
4400 //
4401 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Guid?</c> value.</summary>
4402 public static Guid? ToNullableGuid(SqlBinary p) { return p.IsNull ? (Guid?)null : p.ToSqlGuid().Value; }
4403 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Guid?</c> value.</summary>
4404 public static Guid? ToNullableGuid(SqlGuid p) { return p.IsNull ? (Guid?)null : p.Value; }
4405 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Guid?</c> value.</summary>
4406 public static Guid? ToNullableGuid(SqlString p) { return p.IsNull ? (Guid?)null : new Guid(p.Value); }
4407
4408 #endif
4409
4410 // From Object
4411 //
4412 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Guid?</c> value.</summary>
4413 public static Guid? ToNullableGuid(object p)
4414 {
4415 if (p == null) return null;
4416
4417 if (p is Guid?) return (Guid?)p;
4418
4419 var type = p.GetType();
4420
4421 // Primitive types
4422 //
4423 switch (Type.GetTypeCode(type))
4424 {
4425 case TypeCode.DBNull : return null;
4426 case TypeCode.String : return ToNullableGuid((String)p);
4427 }
4428
4429 // Simple Types
4430 //
4431 if (p is Guid) return ToNullableGuid((Guid) p);
4432
4433 // Other Types
4434 //
4435 if (p is Binary) return ToNullableGuid((Binary) p);
4436 if (p is Byte[]) return ToNullableGuid((Byte[]) p);
4437 if (p is Type) return ToNullableGuid((Type) p);
4438
4439 #if !SILVERLIGHT
4440
4441 // Sql Types
4442 //
4443 if (p is INullable)
4444 {
4445 if (p is SqlBinary) return ToNullableGuid((SqlBinary)p);
4446 if (p is SqlGuid) return ToNullableGuid((SqlGuid) p);
4447 if (p is SqlString) return ToNullableGuid((SqlString)p);
4448 }
4449
4450 #endif
4451
4452 throw CreateInvalidCastException(p.GetType(), typeof(Guid?));
4453 }
4454
4455 #endregion
4456
4457 #region Int16?
4458
4459 // Simple Types
4460 //
4461 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int16?</c> value.</summary>
4462 public static Int16? ToNullableInt16(Boolean p) { return p ? (Int16?)1 : (Int16?)0; }
4463 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int16?</c> value.</summary>
4464 public static Int16? ToNullableInt16(Byte p) { return p; }
4465 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int16?</c> value.</summary>
4466 public static Int16? ToNullableInt16(Char p) { return checked((Int16?)p); }
4467 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int16?</c> value.</summary>
4468 public static Int16? ToNullableInt16(Decimal p) { return checked((Int16?)p); }
4469 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int16?</c> value.</summary>
4470 public static Int16? ToNullableInt16(Double p) { return checked((Int16?)p); }
4471 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int16?</c> value.</summary>
4472 public static Int16? ToNullableInt16(Int16 p) { return p; }
4473 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int16?</c> value.</summary>
4474 public static Int16? ToNullableInt16(Int32 p) { return checked((Int16?)p); }
4475 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int16?</c> value.</summary>
4476 public static Int16? ToNullableInt16(Int64 p) { return checked((Int16?)p); }
4477 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int16?</c> value.</summary>
4478 [CLSCompliant(false)]
4479 public static Int16? ToNullableInt16(SByte p) { return p; }
4480 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int16?</c> value.</summary>
4481 public static Int16? ToNullableInt16(Single p) { return checked((Int16?)p); }
4482 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int16?</c> value.</summary>
4483 public static Int16? ToNullableInt16(String p) { return p == null? (Int16?)null : Int16.Parse(p); }
4484 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int16?</c> value.</summary>
4485 [CLSCompliant(false)]
4486 public static Int16? ToNullableInt16(UInt16 p) { return checked((Int16?)p); }
4487 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int16?</c> value.</summary>
4488 [CLSCompliant(false)]
4489 public static Int16? ToNullableInt16(UInt32 p) { return checked((Int16?)p); }
4490 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int16?</c> value.</summary>
4491 [CLSCompliant(false)]
4492 public static Int16? ToNullableInt16(UInt64 p) { return checked((Int16?)p); }
4493
4494 // Nullable Types
4495 //
4496 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int16?</c> value.</summary>
4497 public static Int16? ToNullableInt16(Boolean? p) { return p.HasValue && p.Value ? (Int16?)1: (Int16?)0; }
4498 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int16?</c> value.</summary>
4499 public static Int16? ToNullableInt16(Byte? p) { return p.HasValue ? p.Value : (Int16?)null; }
4500 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int16?</c> value.</summary>
4501 public static Int16? ToNullableInt16(Char? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4502 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int16?</c> value.</summary>
4503 public static Int16? ToNullableInt16(Decimal? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4504 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int16?</c> value.</summary>
4505 public static Int16? ToNullableInt16(Double? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4506 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int16?</c> value.</summary>
4507 public static Int16? ToNullableInt16(Int32? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4508 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int16?</c> value.</summary>
4509 public static Int16? ToNullableInt16(Int64? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4510 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int16?</c> value.</summary>
4511 [CLSCompliant(false)]
4512 public static Int16? ToNullableInt16(SByte? p) { return p.HasValue ? p.Value : (Int16?)null; }
4513 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int16?</c> value.</summary>
4514 public static Int16? ToNullableInt16(Single? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4515 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int16?</c> value.</summary>
4516 [CLSCompliant(false)]
4517 public static Int16? ToNullableInt16(UInt16? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4518 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int16?</c> value.</summary>
4519 [CLSCompliant(false)]
4520 public static Int16? ToNullableInt16(UInt32? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4521 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int16?</c> value.</summary>
4522 [CLSCompliant(false)]
4523 public static Int16? ToNullableInt16(UInt64? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
4524
4525 // Other Types
4526 //
4527 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int16?</c> value.</summary>
4528 public static Int16? ToNullableInt16(Binary p) { return p == null || p.Length == 0 ? (Int16?)null : BitConverter.ToInt16(p.ToArray(), 0); }
4529 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int16?</c> value.</summary>
4530 public static Int16? ToNullableInt16(Byte[] p) { return p == null || p.Length == 0 ? (Int16?)null : BitConverter.ToInt16(p, 0); }
4531
4532 #if !SILVERLIGHT
4533
4534 // Sql Types
4535 //
4536 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int16?</c> value.</summary>
4537 public static Int16? ToNullableInt16(SqlBoolean p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4538 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int16?</c> value.</summary>
4539 public static Int16? ToNullableInt16(SqlByte p) { return p.IsNull ? (Int16?)null : p.Value; }
4540 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int16?</c> value.</summary>
4541 public static Int16? ToNullableInt16(SqlDecimal p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4542 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int16?</c> value.</summary>
4543 public static Int16? ToNullableInt16(SqlDouble p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4544 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int16?</c> value.</summary>
4545 public static Int16? ToNullableInt16(SqlInt16 p) { return p.IsNull ? (Int16?)null : p.Value; }
4546 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int16?</c> value.</summary>
4547 public static Int16? ToNullableInt16(SqlInt32 p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4548 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int16?</c> value.</summary>
4549 public static Int16? ToNullableInt16(SqlInt64 p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4550 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int16?</c> value.</summary>
4551 public static Int16? ToNullableInt16(SqlMoney p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4552 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int16?</c> value.</summary>
4553 public static Int16? ToNullableInt16(SqlSingle p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4554 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int16?</c> value.</summary>
4555 public static Int16? ToNullableInt16(SqlString p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
4556
4557 #endif
4558
4559 // From Object
4560 //
4561 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int16?</c> value.</summary>
4562 public static Int16? ToNullableInt16(object p)
4563 {
4564 if (p == null) return null;
4565
4566 if (p is Int16?) return (Int16?)p;
4567
4568 var type = p.GetType();
4569
4570 // Primitive types
4571 //
4572 switch (Type.GetTypeCode(type))
4573 {
4574 case TypeCode.DBNull : return null;
4575 case TypeCode.SByte : return ToNullableInt16((SByte) p);
4576 case TypeCode.Int16 : return ToNullableInt16((Int16) p);
4577 case TypeCode.Byte : return ToNullableInt16((Byte) p);
4578 case TypeCode.Int32 : return ToNullableInt16((Int32) p);
4579 case TypeCode.Int64 : return ToNullableInt16((Int64) p);
4580 case TypeCode.UInt16 : return ToNullableInt16((UInt16) p);
4581 case TypeCode.UInt32 : return ToNullableInt16((UInt32) p);
4582 case TypeCode.UInt64 : return ToNullableInt16((UInt64) p);
4583 case TypeCode.Single : return ToNullableInt16((Single) p);
4584 case TypeCode.Double : return ToNullableInt16((Double) p);
4585 case TypeCode.Decimal : return ToNullableInt16((Decimal)p);
4586 case TypeCode.Char : return ToNullableInt16((Char) p);
4587 case TypeCode.String : return ToNullableInt16((String) p);
4588 case TypeCode.Boolean : return ToNullableInt16((Boolean)p);
4589 }
4590
4591 // Nullable Types
4592 //
4593 if (type.IsGenericType)
4594 {
4595 if (p is Boolean?) return ToNullableInt16((Boolean?) p);
4596 if (p is Byte?) return ToNullableInt16((Byte?) p);
4597 if (p is Char?) return ToNullableInt16((Char?) p);
4598 if (p is Decimal?) return ToNullableInt16((Decimal?) p);
4599 if (p is Double?) return ToNullableInt16((Double?) p);
4600 if (p is Int32?) return ToNullableInt16((Int32?) p);
4601 if (p is Int64?) return ToNullableInt16((Int64?) p);
4602 if (p is SByte?) return ToNullableInt16((SByte?) p);
4603 if (p is Single?) return ToNullableInt16((Single?) p);
4604 if (p is UInt16?) return ToNullableInt16((UInt16?) p);
4605 if (p is UInt32?) return ToNullableInt16((UInt32?) p);
4606 if (p is UInt64?) return ToNullableInt16((UInt64?) p);
4607 }
4608
4609 // Other Types
4610 //
4611 if (p is Binary) return ToNullableInt16((Binary) p);
4612 if (p is Byte[]) return ToNullableInt16((Byte[]) p);
4613
4614 #if !SILVERLIGHT
4615
4616 // Sql Types
4617 //
4618 if (p is INullable)
4619 {
4620 if (p is SqlBoolean) return ToNullableInt16((SqlBoolean)p);
4621 if (p is SqlByte) return ToNullableInt16((SqlByte) p);
4622 if (p is SqlDecimal) return ToNullableInt16((SqlDecimal)p);
4623 if (p is SqlDouble) return ToNullableInt16((SqlDouble) p);
4624 if (p is SqlInt16) return ToNullableInt16((SqlInt16) p);
4625 if (p is SqlInt32) return ToNullableInt16((SqlInt32) p);
4626 if (p is SqlInt64) return ToNullableInt16((SqlInt64) p);
4627 if (p is SqlMoney) return ToNullableInt16((SqlMoney) p);
4628 if (p is SqlSingle) return ToNullableInt16((SqlSingle) p);
4629 if (p is SqlString) return ToNullableInt16((SqlString) p);
4630 }
4631
4632 #endif
4633
4634 throw CreateInvalidCastException(p.GetType(), typeof(Int16?));
4635 }
4636
4637 #endregion
4638
4639 #region Int32?
4640
4641 // Simple Types
4642 //
4643 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int32?</c> value.</summary>
4644 public static Int32? ToNullableInt32(Boolean p) { return p ? (Int32?)1 : (Int32?)0; }
4645 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int32?</c> value.</summary>
4646 public static Int32? ToNullableInt32(Byte p) { return p; }
4647 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int32?</c> value.</summary>
4648 public static Int32? ToNullableInt32(Char p) { return p; }
4649 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int32?</c> value.</summary>
4650 public static Int32? ToNullableInt32(Decimal p) { return checked((Int32?)p); }
4651 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int32?</c> value.</summary>
4652 public static Int32? ToNullableInt32(Double p) { return checked((Int32?)p); }
4653 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int32?</c> value.</summary>
4654 public static Int32? ToNullableInt32(Int16 p) { return p; }
4655 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int32?</c> value.</summary>
4656 public static Int32? ToNullableInt32(Int32 p) { return p; }
4657 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int32?</c> value.</summary>
4658 public static Int32? ToNullableInt32(Int64 p) { return checked((Int32?)p); }
4659 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int32?</c> value.</summary>
4660 [CLSCompliant(false)]
4661 public static Int32? ToNullableInt32(SByte p) { return p; }
4662 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int32?</c> value.</summary>
4663 public static Int32? ToNullableInt32(Single p) { return checked((Int32?)p); }
4664 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int32?</c> value.</summary>
4665 public static Int32? ToNullableInt32(String p) { return p == null? (Int32?)null : Int32.Parse(p); }
4666 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int32?</c> value.</summary>
4667 [CLSCompliant(false)]
4668 public static Int32? ToNullableInt32(UInt16 p) { return p; }
4669 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int32?</c> value.</summary>
4670 [CLSCompliant(false)]
4671 public static Int32? ToNullableInt32(UInt32 p) { return checked((Int32?)p); }
4672 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int32?</c> value.</summary>
4673 [CLSCompliant(false)]
4674 public static Int32? ToNullableInt32(UInt64 p) { return checked((Int32?)p); }
4675
4676 // Nullable Types
4677 //
4678 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int32?</c> value.</summary>
4679 public static Int32? ToNullableInt32(Boolean? p) { return p.HasValue && p.Value ? (Int32?)1: (Int32?)0; }
4680 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int32?</c> value.</summary>
4681 public static Int32? ToNullableInt32(Byte? p) { return p.HasValue ? p.Value : (Int32?)null; }
4682 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int32?</c> value.</summary>
4683 public static Int32? ToNullableInt32(Char? p) { return p.HasValue ? p.Value : (Int32?)null; }
4684 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int32?</c> value.</summary>
4685 public static Int32? ToNullableInt32(Decimal? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
4686 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int32?</c> value.</summary>
4687 public static Int32? ToNullableInt32(Double? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
4688 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int32?</c> value.</summary>
4689 public static Int32? ToNullableInt32(Int16? p) { return p.HasValue ? p.Value : (Int32?)null; }
4690 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int32?</c> value.</summary>
4691 public static Int32? ToNullableInt32(Int64? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
4692 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int32?</c> value.</summary>
4693 [CLSCompliant(false)]
4694 public static Int32? ToNullableInt32(SByte? p) { return p.HasValue ? p.Value : (Int32?)null; }
4695 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int32?</c> value.</summary>
4696 public static Int32? ToNullableInt32(Single? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
4697 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int32?</c> value.</summary>
4698 [CLSCompliant(false)]
4699 public static Int32? ToNullableInt32(UInt16? p) { return p.HasValue ? p.Value : (Int32?)null; }
4700 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int32?</c> value.</summary>
4701 [CLSCompliant(false)]
4702 public static Int32? ToNullableInt32(UInt32? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
4703 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int32?</c> value.</summary>
4704 [CLSCompliant(false)]
4705 public static Int32? ToNullableInt32(UInt64? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
4706
4707 // Other Types
4708 //
4709 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int32?</c> value.</summary>
4710 public static Int32? ToNullableInt32(Binary p) { return p == null || p.Length == 0 ? (Int32?)null : BitConverter.ToInt32(p.ToArray(), 0); }
4711 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int32?</c> value.</summary>
4712 public static Int32? ToNullableInt32(Byte[] p) { return p == null || p.Length == 0 ? (Int32?)null : BitConverter.ToInt32(p, 0); }
4713
4714 #if !SILVERLIGHT
4715
4716 // Sql Types
4717 //
4718 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int32?</c> value.</summary>
4719 public static Int32? ToNullableInt32(SqlBoolean p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
4720 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int32?</c> value.</summary>
4721 public static Int32? ToNullableInt32(SqlByte p) { return p.IsNull ? (Int32?)null : p.Value; }
4722 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int32?</c> value.</summary>
4723 public static Int32? ToNullableInt32(SqlDecimal p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
4724 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int32?</c> value.</summary>
4725 public static Int32? ToNullableInt32(SqlDouble p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
4726 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int32?</c> value.</summary>
4727 public static Int32? ToNullableInt32(SqlInt16 p) { return p.IsNull ? (Int32?)null : p.Value; }
4728 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int32?</c> value.</summary>
4729 public static Int32? ToNullableInt32(SqlInt32 p) { return p.IsNull ? (Int32?)null : p.Value; }
4730 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int32?</c> value.</summary>
4731 public static Int32? ToNullableInt32(SqlInt64 p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
4732 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int32?</c> value.</summary>
4733 public static Int32? ToNullableInt32(SqlMoney p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
4734 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int32?</c> value.</summary>
4735 public static Int32? ToNullableInt32(SqlSingle p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
4736 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int32?</c> value.</summary>
4737 public static Int32? ToNullableInt32(SqlString p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
4738
4739 #endif
4740
4741 // From Object
4742 //
4743 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int32?</c> value.</summary>
4744 public static Int32? ToNullableInt32(object p)
4745 {
4746 if (p == null) return null;
4747
4748 if (p is Int32?) return (Int32?)p;
4749
4750 var type = p.GetType();
4751
4752 // Primitive types
4753 //
4754 switch (Type.GetTypeCode(type))
4755 {
4756 case TypeCode.DBNull : return null;
4757 case TypeCode.SByte : return ToNullableInt32((SByte) p);
4758 case TypeCode.Int16 : return ToNullableInt32((Int16) p);
4759 case TypeCode.Int32 : return ToNullableInt32((Int32) p);
4760 case TypeCode.Byte : return ToNullableInt32((Byte) p);
4761 case TypeCode.UInt16 : return ToNullableInt32((UInt16) p);
4762 case TypeCode.Char : return ToNullableInt32((Char) p);
4763 case TypeCode.Int64 : return ToNullableInt32((Int64) p);
4764 case TypeCode.UInt32 : return ToNullableInt32((UInt32) p);
4765 case TypeCode.UInt64 : return ToNullableInt32((UInt64) p);
4766 case TypeCode.Single : return ToNullableInt32((Single) p);
4767 case TypeCode.Double : return ToNullableInt32((Double) p);
4768 case TypeCode.Decimal : return ToNullableInt32((Decimal)p);
4769 case TypeCode.String : return ToNullableInt32((String) p);
4770 case TypeCode.Boolean : return ToNullableInt32((Boolean)p);
4771 }
4772
4773 // Nullable Types
4774 //
4775 if (type.IsGenericType)
4776 {
4777 if (p is Boolean?) return ToNullableInt32((Boolean?) p);
4778 if (p is Byte?) return ToNullableInt32((Byte?) p);
4779 if (p is Char?) return ToNullableInt32((Char?) p);
4780 if (p is Decimal?) return ToNullableInt32((Decimal?) p);
4781 if (p is Double?) return ToNullableInt32((Double?) p);
4782 if (p is Int16?) return ToNullableInt32((Int16?) p);
4783 if (p is Int64?) return ToNullableInt32((Int64?) p);
4784 if (p is SByte?) return ToNullableInt32((SByte?) p);
4785 if (p is Single?) return ToNullableInt32((Single?) p);
4786 if (p is UInt16?) return ToNullableInt32((UInt16?) p);
4787 if (p is UInt32?) return ToNullableInt32((UInt32?) p);
4788 if (p is UInt64?) return ToNullableInt32((UInt64?) p);
4789 }
4790
4791 // Other Types
4792 //
4793 if (p is Binary) return ToNullableInt32((Binary) p);
4794 if (p is Byte[]) return ToNullableInt32((Byte[]) p);
4795
4796 #if !SILVERLIGHT
4797
4798 // Sql Types
4799 //
4800 if (p is INullable)
4801 {
4802 if (p is SqlBoolean) return ToNullableInt32((SqlBoolean)p);
4803 if (p is SqlByte) return ToNullableInt32((SqlByte) p);
4804 if (p is SqlDecimal) return ToNullableInt32((SqlDecimal)p);
4805 if (p is SqlDouble) return ToNullableInt32((SqlDouble) p);
4806 if (p is SqlInt16) return ToNullableInt32((SqlInt16) p);
4807 if (p is SqlInt32) return ToNullableInt32((SqlInt32) p);
4808 if (p is SqlInt64) return ToNullableInt32((SqlInt64) p);
4809 if (p is SqlMoney) return ToNullableInt32((SqlMoney) p);
4810 if (p is SqlSingle) return ToNullableInt32((SqlSingle) p);
4811 if (p is SqlString) return ToNullableInt32((SqlString) p);
4812 }
4813
4814 #endif
4815
4816 throw CreateInvalidCastException(p.GetType(), typeof(Int32?));
4817 }
4818
4819 #endregion
4820
4821 #region Int64?
4822
4823 // Simple Types
4824 //
4825 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int64?</c> value.</summary>
4826 public static Int64? ToNullableInt64(Boolean p) { return p ? (Int64?)1 : (Int64?)0; }
4827 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int64?</c> value.</summary>
4828 public static Int64? ToNullableInt64(Byte p) { return p; }
4829 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int64?</c> value.</summary>
4830 public static Int64? ToNullableInt64(Char p) { return p; }
4831 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Int64?</c> value.</summary>
4832 public static Int64? ToNullableInt64(DateTime p) { return (p - DateTime.MinValue).Ticks; }
4833 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Int64?</c> value.</summary>
4834 public static Int64? ToNullableInt64(DateTimeOffset p) { return (p - DateTime.MinValue).Ticks; }
4835 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int64?</c> value.</summary>
4836 public static Int64? ToNullableInt64(Decimal p) { return checked((Int64?)p); }
4837 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int64?</c> value.</summary>
4838 public static Int64? ToNullableInt64(Double p) { return checked((Int64?)p); }
4839 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int64?</c> value.</summary>
4840 public static Int64? ToNullableInt64(Int16 p) { return p; }
4841 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int64?</c> value.</summary>
4842 public static Int64? ToNullableInt64(Int32 p) { return p; }
4843 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int64?</c> value.</summary>
4844 public static Int64? ToNullableInt64(Int64 p) { return p; }
4845 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int64?</c> value.</summary>
4846 [CLSCompliant(false)]
4847 public static Int64? ToNullableInt64(SByte p) { return p; }
4848 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int64?</c> value.</summary>
4849 public static Int64? ToNullableInt64(Single p) { return checked((Int64?)p); }
4850 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int64?</c> value.</summary>
4851 public static Int64? ToNullableInt64(String p) { return p == null? (Int64?)null : Int64.Parse(p); }
4852 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Int64?</c> value.</summary>
4853 public static Int64? ToNullableInt64(TimeSpan p) { return p.Ticks; }
4854 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int64?</c> value.</summary>
4855 [CLSCompliant(false)]
4856 public static Int64? ToNullableInt64(UInt16 p) { return p; }
4857 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int64?</c> value.</summary>
4858 [CLSCompliant(false)]
4859 public static Int64? ToNullableInt64(UInt32 p) { return p; }
4860 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int64?</c> value.</summary>
4861 [CLSCompliant(false)]
4862 public static Int64? ToNullableInt64(UInt64 p) { return checked((Int64?)p); }
4863
4864 // Nullable Types
4865 //
4866 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int64?</c> value.</summary>
4867 public static Int64? ToNullableInt64(Boolean? p) { return p.HasValue && p.Value ? (Int64?)1: (Int64?)0; }
4868 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int64?</c> value.</summary>
4869 public static Int64? ToNullableInt64(Byte? p) { return p.HasValue ? p.Value : (Int64?)null; }
4870 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int64?</c> value.</summary>
4871 public static Int64? ToNullableInt64(Char? p) { return p.HasValue ? p.Value : (Int64?)null; }
4872 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Int64?</c> value.</summary>
4873 public static Int64? ToNullableInt64(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
4874 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Int64?</c> value.</summary>
4875 public static Int64? ToNullableInt64(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
4876 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int64?</c> value.</summary>
4877 public static Int64? ToNullableInt64(Decimal? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
4878 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int64?</c> value.</summary>
4879 public static Int64? ToNullableInt64(Double? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
4880 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int64?</c> value.</summary>
4881 public static Int64? ToNullableInt64(Int16? p) { return p.HasValue ? p.Value : (Int64?)null; }
4882 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int64?</c> value.</summary>
4883 public static Int64? ToNullableInt64(Int32? p) { return p.HasValue ? p.Value : (Int64?)null; }
4884 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int64?</c> value.</summary>
4885 [CLSCompliant(false)]
4886 public static Int64? ToNullableInt64(SByte? p) { return p.HasValue ? p.Value : (Int64?)null; }
4887 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int64?</c> value.</summary>
4888 public static Int64? ToNullableInt64(Single? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
4889 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Int64?</c> value.</summary>
4890 public static Int64? ToNullableInt64(TimeSpan? p) { return p.HasValue ? p.Value.Ticks : 0; }
4891 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int64?</c> value.</summary>
4892 [CLSCompliant(false)]
4893 public static Int64? ToNullableInt64(UInt16? p) { return p.HasValue ? p.Value : (Int64?)null; }
4894 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int64?</c> value.</summary>
4895 [CLSCompliant(false)]
4896 public static Int64? ToNullableInt64(UInt32? p) { return p.HasValue ? p.Value : (Int64?)null; }
4897 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int64?</c> value.</summary>
4898 [CLSCompliant(false)]
4899 public static Int64? ToNullableInt64(UInt64? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
4900
4901 // Other Types
4902 //
4903 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int64?</c> value.</summary>
4904 public static Int64? ToNullableInt64(Binary p) { return p == null || p.Length == 0 ? (Int64?)null : BitConverter.ToInt64(p.ToArray(), 0); }
4905 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int64?</c> value.</summary>
4906 public static Int64? ToNullableInt64(Byte[] p) { return p == null || p.Length == 0 ? (Int64?)null : BitConverter.ToInt64(p, 0); }
4907
4908 #if !SILVERLIGHT
4909
4910 // Sql Types
4911 //
4912 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int64?</c> value.</summary>
4913 public static Int64? ToNullableInt64(SqlBoolean p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
4914 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int64?</c> value.</summary>
4915 public static Int64? ToNullableInt64(SqlByte p) { return p.IsNull ? (Int64?)null : p.Value; }
4916 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Int64?</c> value.</summary>
4917 public static Int64? ToNullableInt64(SqlDateTime p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
4918 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int64?</c> value.</summary>
4919 public static Int64? ToNullableInt64(SqlDecimal p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
4920 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int64?</c> value.</summary>
4921 public static Int64? ToNullableInt64(SqlDouble p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
4922 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int64?</c> value.</summary>
4923 public static Int64? ToNullableInt64(SqlInt16 p) { return p.IsNull ? (Int64?)null : p.Value; }
4924 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int64?</c> value.</summary>
4925 public static Int64? ToNullableInt64(SqlInt32 p) { return p.IsNull ? (Int64?)null : p.Value; }
4926 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int64?</c> value.</summary>
4927 public static Int64? ToNullableInt64(SqlInt64 p) { return p.IsNull ? (Int64?)null : p.Value; }
4928 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int64?</c> value.</summary>
4929 public static Int64? ToNullableInt64(SqlMoney p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
4930 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int64?</c> value.</summary>
4931 public static Int64? ToNullableInt64(SqlSingle p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
4932 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int64?</c> value.</summary>
4933 public static Int64? ToNullableInt64(SqlString p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
4934
4935 #endif
4936
4937 // From Object
4938 //
4939 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int64?</c> value.</summary>
4940 public static Int64? ToNullableInt64(object p)
4941 {
4942 if (p == null) return null;
4943
4944 if (p is Int64?) return (Int64?)p;
4945
4946 var type = p.GetType();
4947
4948 // Primitive types
4949 //
4950 switch (Type.GetTypeCode(type))
4951 {
4952 case TypeCode.DBNull : return null;
4953 case TypeCode.DateTime : return ToNullableInt64((DateTime)p);
4954 case TypeCode.SByte : return ToNullableInt64((SByte) p);
4955 case TypeCode.Int16 : return ToNullableInt64((Int16) p);
4956 case TypeCode.Int32 : return ToNullableInt64((Int32) p);
4957 case TypeCode.Int64 : return ToNullableInt64((Int64) p);
4958 case TypeCode.Byte : return ToNullableInt64((Byte) p);
4959 case TypeCode.UInt16 : return ToNullableInt64((UInt16) p);
4960 case TypeCode.UInt32 : return ToNullableInt64((UInt32) p);
4961 case TypeCode.Char : return ToNullableInt64((Char) p);
4962 case TypeCode.UInt64 : return ToNullableInt64((UInt64) p);
4963 case TypeCode.Single : return ToNullableInt64((Single) p);
4964 case TypeCode.Double : return ToNullableInt64((Double) p);
4965 case TypeCode.Decimal : return ToNullableInt64((Decimal) p);
4966 case TypeCode.String : return ToNullableInt64((String) p);
4967 case TypeCode.Boolean : return ToNullableInt64((Boolean) p);
4968 }
4969
4970 // Simple Types
4971 //
4972 if (p is DateTimeOffset) return ToNullableInt64((DateTimeOffset) p);
4973 if (p is TimeSpan) return ToNullableInt64((TimeSpan) p);
4974
4975 // Nullable Types
4976 //
4977 if (type.IsGenericType)
4978 {
4979 if (p is Boolean?) return ToNullableInt64((Boolean?) p);
4980 if (p is Byte?) return ToNullableInt64((Byte?) p);
4981 if (p is Char?) return ToNullableInt64((Char?) p);
4982 if (p is DateTime?) return ToNullableInt64((DateTime?) p);
4983 if (p is DateTimeOffset?) return ToNullableInt64((DateTimeOffset?)p);
4984 if (p is Decimal?) return ToNullableInt64((Decimal?) p);
4985 if (p is Double?) return ToNullableInt64((Double?) p);
4986 if (p is Int16?) return ToNullableInt64((Int16?) p);
4987 if (p is Int32?) return ToNullableInt64((Int32?) p);
4988 if (p is SByte?) return ToNullableInt64((SByte?) p);
4989 if (p is Single?) return ToNullableInt64((Single?) p);
4990 if (p is TimeSpan?) return ToNullableInt64((TimeSpan?) p);
4991 if (p is UInt16?) return ToNullableInt64((UInt16?) p);
4992 if (p is UInt32?) return ToNullableInt64((UInt32?) p);
4993 if (p is UInt64?) return ToNullableInt64((UInt64?) p);
4994 }
4995
4996 // Other Types
4997 //
4998 if (p is Binary) return ToNullableInt64((Binary) p);
4999 if (p is Byte[]) return ToNullableInt64((Byte[]) p);
5000
5001 #if !SILVERLIGHT
5002
5003 // Sql Types
5004 //
5005 if (p is INullable)
5006 {
5007 if (p is SqlBoolean) return ToNullableInt64((SqlBoolean) p);
5008 if (p is SqlByte) return ToNullableInt64((SqlByte) p);
5009 if (p is SqlDateTime) return ToNullableInt64((SqlDateTime) p);
5010 if (p is SqlDecimal) return ToNullableInt64((SqlDecimal) p);
5011 if (p is SqlDouble) return ToNullableInt64((SqlDouble) p);
5012 if (p is SqlInt16) return ToNullableInt64((SqlInt16) p);
5013 if (p is SqlInt32) return ToNullableInt64((SqlInt32) p);
5014 if (p is SqlInt64) return ToNullableInt64((SqlInt64) p);
5015 if (p is SqlMoney) return ToNullableInt64((SqlMoney) p);
5016 if (p is SqlSingle) return ToNullableInt64((SqlSingle) p);
5017 if (p is SqlString) return ToNullableInt64((SqlString) p);
5018 }
5019
5020 #endif
5021
5022 throw CreateInvalidCastException(p.GetType(), typeof(Int64?));
5023 }
5024
5025 #endregion
5026
5027 #region SByte?
5028
5029 // Simple Types
5030 //
5031 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SByte?</c> value.</summary>
5032 [CLSCompliant(false)]
5033 public static SByte? ToNullableSByte(Boolean p) { return p ? (SByte?)1 : (SByte?)0; }
5034 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SByte?</c> value.</summary>
5035 [CLSCompliant(false)]
5036 public static SByte? ToNullableSByte(Byte p) { return checked((SByte?)p); }
5037 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SByte?</c> value.</summary>
5038 [CLSCompliant(false)]
5039 public static SByte? ToNullableSByte(Char p) { return checked((SByte?)p); }
5040 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SByte?</c> value.</summary>
5041 [CLSCompliant(false)]
5042 public static SByte? ToNullableSByte(Decimal p) { return checked((SByte?)p); }
5043 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SByte?</c> value.</summary>
5044 [CLSCompliant(false)]
5045 public static SByte? ToNullableSByte(Double p) { return checked((SByte?)p); }
5046 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SByte?</c> value.</summary>
5047 [CLSCompliant(false)]
5048 public static SByte? ToNullableSByte(Int16 p) { return checked((SByte?)p); }
5049 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SByte?</c> value.</summary>
5050 [CLSCompliant(false)]
5051 public static SByte? ToNullableSByte(Int32 p) { return checked((SByte?)p); }
5052 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SByte?</c> value.</summary>
5053 [CLSCompliant(false)]
5054 public static SByte? ToNullableSByte(Int64 p) { return checked((SByte?)p); }
5055 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SByte?</c> value.</summary>
5056 [CLSCompliant(false)]
5057 public static SByte? ToNullableSByte(SByte p) { return p; }
5058 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SByte?</c> value.</summary>
5059 [CLSCompliant(false)]
5060 public static SByte? ToNullableSByte(Single p) { return checked((SByte?)p); }
5061 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SByte?</c> value.</summary>
5062 [CLSCompliant(false)]
5063 public static SByte? ToNullableSByte(String p) { return p == null? (SByte?)null : SByte.Parse(p); }
5064 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SByte?</c> value.</summary>
5065 [CLSCompliant(false)]
5066 public static SByte? ToNullableSByte(UInt16 p) { return checked((SByte?)p); }
5067 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SByte?</c> value.</summary>
5068 [CLSCompliant(false)]
5069 public static SByte? ToNullableSByte(UInt32 p) { return checked((SByte?)p); }
5070 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SByte?</c> value.</summary>
5071 [CLSCompliant(false)]
5072 public static SByte? ToNullableSByte(UInt64 p) { return checked((SByte?)p); }
5073
5074 // Nullable Types
5075 //
5076 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SByte?</c> value.</summary>
5077 [CLSCompliant(false)]
5078 public static SByte? ToNullableSByte(Boolean? p) { return p.HasValue && p.Value ? (SByte?)1: (SByte?)0; }
5079 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SByte?</c> value.</summary>
5080 [CLSCompliant(false)]
5081 public static SByte? ToNullableSByte(Byte? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5082 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SByte?</c> value.</summary>
5083 [CLSCompliant(false)]
5084 public static SByte? ToNullableSByte(Char? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5085 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SByte?</c> value.</summary>
5086 [CLSCompliant(false)]
5087 public static SByte? ToNullableSByte(Decimal? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5088 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SByte?</c> value.</summary>
5089 [CLSCompliant(false)]
5090 public static SByte? ToNullableSByte(Double? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5091 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SByte?</c> value.</summary>
5092 [CLSCompliant(false)]
5093 public static SByte? ToNullableSByte(Int16? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5094 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SByte?</c> value.</summary>
5095 [CLSCompliant(false)]
5096 public static SByte? ToNullableSByte(Int32? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5097 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SByte?</c> value.</summary>
5098 [CLSCompliant(false)]
5099 public static SByte? ToNullableSByte(Int64? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5100 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SByte?</c> value.</summary>
5101 [CLSCompliant(false)]
5102 public static SByte? ToNullableSByte(Single? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5103 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SByte?</c> value.</summary>
5104 [CLSCompliant(false)]
5105 public static SByte? ToNullableSByte(UInt16? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5106 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SByte?</c> value.</summary>
5107 [CLSCompliant(false)]
5108 public static SByte? ToNullableSByte(UInt32? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5109 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SByte?</c> value.</summary>
5110 [CLSCompliant(false)]
5111 public static SByte? ToNullableSByte(UInt64? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
5112
5113 // Other Types
5114 //
5115 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SByte?</c> value.</summary>
5116 [CLSCompliant(false)]
5117 public static SByte? ToNullableSByte(Binary p) { return p == null || p.Length == 0 ? (SByte?)null : checked((SByte?)p.ToArray()[0]); }
5118 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SByte?</c> value.</summary>
5119 [CLSCompliant(false)]
5120 public static SByte? ToNullableSByte(Byte[] p) { return p == null || p.Length == 0 ? (SByte?)null : checked((SByte?)p[0]); }
5121
5122 #if !SILVERLIGHT
5123
5124 // Sql Types
5125 //
5126 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SByte?</c> value.</summary>
5127 [CLSCompliant(false)]
5128 public static SByte? ToNullableSByte(SqlBoolean p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5129 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SByte?</c> value.</summary>
5130 [CLSCompliant(false)]
5131 public static SByte? ToNullableSByte(SqlByte p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5132 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SByte?</c> value.</summary>
5133 [CLSCompliant(false)]
5134 public static SByte? ToNullableSByte(SqlDecimal p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5135 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SByte?</c> value.</summary>
5136 [CLSCompliant(false)]
5137 public static SByte? ToNullableSByte(SqlDouble p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5138 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SByte?</c> value.</summary>
5139 [CLSCompliant(false)]
5140 public static SByte? ToNullableSByte(SqlInt16 p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5141 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SByte?</c> value.</summary>
5142 [CLSCompliant(false)]
5143 public static SByte? ToNullableSByte(SqlInt32 p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5144 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SByte?</c> value.</summary>
5145 [CLSCompliant(false)]
5146 public static SByte? ToNullableSByte(SqlInt64 p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5147 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SByte?</c> value.</summary>
5148 [CLSCompliant(false)]
5149 public static SByte? ToNullableSByte(SqlMoney p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5150 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SByte?</c> value.</summary>
5151 [CLSCompliant(false)]
5152 public static SByte? ToNullableSByte(SqlSingle p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5153 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SByte?</c> value.</summary>
5154 [CLSCompliant(false)]
5155 public static SByte? ToNullableSByte(SqlString p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
5156
5157 #endif
5158
5159 // From Object
5160 //
5161 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SByte?</c> value.</summary>
5162 [CLSCompliant(false)]
5163 public static SByte? ToNullableSByte(object p)
5164 {
5165 if (p == null) return null;
5166
5167 if (p is SByte?) return (SByte?)p;
5168
5169 var type = p.GetType();
5170
5171 // Primitive types
5172 //
5173 switch (Type.GetTypeCode(type))
5174 {
5175 case TypeCode.DBNull : return null;
5176 case TypeCode.SByte : return ToNullableSByte((SByte) p);
5177 case TypeCode.Int16 : return ToNullableSByte((Int16) p);
5178 case TypeCode.Int32 : return ToNullableSByte((Int32) p);
5179 case TypeCode.Int64 : return ToNullableSByte((Int64) p);
5180 case TypeCode.Byte : return ToNullableSByte((Byte) p);
5181 case TypeCode.UInt16 : return ToNullableSByte((UInt16) p);
5182 case TypeCode.UInt32 : return ToNullableSByte((UInt32) p);
5183 case TypeCode.UInt64 : return ToNullableSByte((UInt64) p);
5184 case TypeCode.Single : return ToNullableSByte((Single) p);
5185 case TypeCode.Double : return ToNullableSByte((Double) p);
5186 case TypeCode.Decimal : return ToNullableSByte((Decimal)p);
5187 case TypeCode.Char : return ToNullableSByte((Char) p);
5188 case TypeCode.String : return ToNullableSByte((String) p);
5189 case TypeCode.Boolean : return ToNullableSByte((Boolean)p);
5190 }
5191
5192 // Nullable Types
5193 //
5194 if (type.IsGenericType)
5195 {
5196 if (p is Boolean?) return ToNullableSByte((Boolean?) p);
5197 if (p is Byte?) return ToNullableSByte((Byte?) p);
5198 if (p is Char?) return ToNullableSByte((Char?) p);
5199 if (p is Decimal?) return ToNullableSByte((Decimal?) p);
5200 if (p is Double?) return ToNullableSByte((Double?) p);
5201 if (p is Int16?) return ToNullableSByte((Int16?) p);
5202 if (p is Int32?) return ToNullableSByte((Int32?) p);
5203 if (p is Int64?) return ToNullableSByte((Int64?) p);
5204 if (p is Single?) return ToNullableSByte((Single?) p);
5205 if (p is UInt16?) return ToNullableSByte((UInt16?) p);
5206 if (p is UInt32?) return ToNullableSByte((UInt32?) p);
5207 if (p is UInt64?) return ToNullableSByte((UInt64?) p);
5208 }
5209
5210 // Other Types
5211 //
5212 if (p is Binary) return ToNullableSByte((Binary) p);
5213 if (p is Byte[]) return ToNullableSByte((Byte[]) p);
5214
5215 #if !SILVERLIGHT
5216
5217 // Sql Types
5218 //
5219 if (p is INullable)
5220 {
5221 if (p is SqlBoolean) return ToNullableSByte((SqlBoolean)p);
5222 if (p is SqlByte) return ToNullableSByte((SqlByte) p);
5223 if (p is SqlDecimal) return ToNullableSByte((SqlDecimal)p);
5224 if (p is SqlDouble) return ToNullableSByte((SqlDouble) p);
5225 if (p is SqlInt16) return ToNullableSByte((SqlInt16) p);
5226 if (p is SqlInt32) return ToNullableSByte((SqlInt32) p);
5227 if (p is SqlInt64) return ToNullableSByte((SqlInt64) p);
5228 if (p is SqlMoney) return ToNullableSByte((SqlMoney) p);
5229 if (p is SqlSingle) return ToNullableSByte((SqlSingle) p);
5230 if (p is SqlString) return ToNullableSByte((SqlString) p);
5231 }
5232
5233 #endif
5234
5235 throw CreateInvalidCastException(p.GetType(), typeof(SByte?));
5236 }
5237
5238 #endregion
5239
5240 #region Single?
5241
5242 // Simple Types
5243 //
5244 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Single?</c> value.</summary>
5245 public static Single? ToNullableSingle(Boolean p) { return p ? (Single?)1 : (Single?)0; }
5246 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Single?</c> value.</summary>
5247 public static Single? ToNullableSingle(Byte p) { return p; }
5248 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Single?</c> value.</summary>
5249 public static Single? ToNullableSingle(Char p) { return p; }
5250 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Single?</c> value.</summary>
5251 public static Single? ToNullableSingle(Decimal p) { return checked((Single?)p); }
5252 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Single?</c> value.</summary>
5253 public static Single? ToNullableSingle(Double p) { return checked((Single?)p); }
5254 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Single?</c> value.</summary>
5255 public static Single? ToNullableSingle(Int16 p) { return p; }
5256 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Single?</c> value.</summary>
5257 public static Single? ToNullableSingle(Int32 p) { return p; }
5258 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Single?</c> value.</summary>
5259 public static Single? ToNullableSingle(Int64 p) { return p; }
5260 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Single?</c> value.</summary>
5261 [CLSCompliant(false)]
5262 public static Single? ToNullableSingle(SByte p) { return p; }
5263 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Single?</c> value.</summary>
5264 public static Single? ToNullableSingle(Single p) { return p; }
5265 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Single?</c> value.</summary>
5266 public static Single? ToNullableSingle(String p) { return p == null? (Single?)null : Single.Parse(p); }
5267 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Single?</c> value.</summary>
5268 [CLSCompliant(false)]
5269 public static Single? ToNullableSingle(UInt16 p) { return p; }
5270 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Single?</c> value.</summary>
5271 [CLSCompliant(false)]
5272 public static Single? ToNullableSingle(UInt32 p) { return p; }
5273 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Single?</c> value.</summary>
5274 [CLSCompliant(false)]
5275 public static Single? ToNullableSingle(UInt64 p) { return p; }
5276
5277 // Nullable Types
5278 //
5279 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Single?</c> value.</summary>
5280 public static Single? ToNullableSingle(Boolean? p) { return p.HasValue && p.Value ? (Single?)1: (Single?)0; }
5281 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Single?</c> value.</summary>
5282 public static Single? ToNullableSingle(Byte? p) { return p.HasValue ? p.Value : (Single?)null; }
5283 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Single?</c> value.</summary>
5284 public static Single? ToNullableSingle(Char? p) { return p.HasValue ? p.Value : (Single?)null; }
5285 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Single?</c> value.</summary>
5286 public static Single? ToNullableSingle(Decimal? p) { return p.HasValue ? checked((Single?)p.Value) : (Single?)null; }
5287 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Single?</c> value.</summary>
5288 public static Single? ToNullableSingle(Double? p) { return p.HasValue ? checked((Single?)p.Value) : (Single?)null; }
5289 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Single?</c> value.</summary>
5290 public static Single? ToNullableSingle(Int16? p) { return p.HasValue ? p.Value : (Single?)null; }
5291 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Single?</c> value.</summary>
5292 public static Single? ToNullableSingle(Int32? p) { return p.HasValue ? p.Value : (Single?)null; }
5293 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Single?</c> value.</summary>
5294 public static Single? ToNullableSingle(Int64? p) { return p.HasValue ? p.Value : (Single?)null; }
5295 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Single?</c> value.</summary>
5296 [CLSCompliant(false)]
5297 public static Single? ToNullableSingle(SByte? p) { return p.HasValue ? p.Value : (Single?)null; }
5298 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Single?</c> value.</summary>
5299 [CLSCompliant(false)]
5300 public static Single? ToNullableSingle(UInt16? p) { return p.HasValue ? p.Value : (Single?)null; }
5301 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Single?</c> value.</summary>
5302 [CLSCompliant(false)]
5303 public static Single? ToNullableSingle(UInt32? p) { return p.HasValue ? p.Value : (Single?)null; }
5304 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Single?</c> value.</summary>
5305 [CLSCompliant(false)]
5306 public static Single? ToNullableSingle(UInt64? p) { return p.HasValue ? p.Value : (Single?)null; }
5307
5308 // Other Types
5309 //
5310 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Single?</c> value.</summary>
5311 public static Single? ToNullableSingle(Binary p) { return p == null || p.Length == 0 ? (Single?)null : BitConverter.ToSingle(p.ToArray(), 0); }
5312 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Single?</c> value.</summary>
5313 public static Single? ToNullableSingle(Byte[] p) { return p == null || p.Length == 0 ? (Single?)null : BitConverter.ToSingle(p, 0); }
5314
5315 #if !SILVERLIGHT
5316
5317 // Sql Types
5318 //
5319 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Single?</c> value.</summary>
5320 public static Single? ToNullableSingle(SqlBoolean p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
5321 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Single?</c> value.</summary>
5322 public static Single? ToNullableSingle(SqlByte p) { return p.IsNull ? (Single?)null : p.Value; }
5323 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Single?</c> value.</summary>
5324 public static Single? ToNullableSingle(SqlDecimal p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
5325 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Single?</c> value.</summary>
5326 public static Single? ToNullableSingle(SqlDouble p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
5327 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Single?</c> value.</summary>
5328 public static Single? ToNullableSingle(SqlInt16 p) { return p.IsNull ? (Single?)null : p.Value; }
5329 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Single?</c> value.</summary>
5330 public static Single? ToNullableSingle(SqlInt32 p) { return p.IsNull ? (Single?)null : p.Value; }
5331 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Single?</c> value.</summary>
5332 public static Single? ToNullableSingle(SqlInt64 p) { return p.IsNull ? (Single?)null : p.Value; }
5333 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Single?</c> value.</summary>
5334 public static Single? ToNullableSingle(SqlMoney p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
5335 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Single?</c> value.</summary>
5336 public static Single? ToNullableSingle(SqlSingle p) { return p.IsNull ? (Single?)null : p.Value; }
5337 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Single?</c> value.</summary>
5338 public static Single? ToNullableSingle(SqlString p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
5339
5340 #endif
5341
5342 // From Object
5343 //
5344 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Single?</c> value.</summary>
5345 public static Single? ToNullableSingle(object p)
5346 {
5347 if (p == null) return null;
5348
5349 if (p is Single?) return (Single?)p;
5350
5351 var type = p.GetType();
5352
5353 // Primitive types
5354 //
5355 switch (Type.GetTypeCode(type))
5356 {
5357 case TypeCode.DBNull : return null;
5358 case TypeCode.SByte : return ToNullableSingle((SByte) p);
5359 case TypeCode.Int16 : return ToNullableSingle((Int16) p);
5360 case TypeCode.Int32 : return ToNullableSingle((Int32) p);
5361 case TypeCode.Int64 : return ToNullableSingle((Int64) p);
5362 case TypeCode.Byte : return ToNullableSingle((Byte) p);
5363 case TypeCode.UInt16 : return ToNullableSingle((UInt16) p);
5364 case TypeCode.UInt32 : return ToNullableSingle((UInt32) p);
5365 case TypeCode.Char : return ToNullableSingle((Char) p);
5366 case TypeCode.UInt64 : return ToNullableSingle((UInt64) p);
5367 case TypeCode.Single : return ToNullableSingle((Single) p);
5368 case TypeCode.Double : return ToNullableSingle((Double) p);
5369 case TypeCode.Decimal : return ToNullableSingle((Decimal)p);
5370 case TypeCode.String : return ToNullableSingle((String) p);
5371 case TypeCode.Boolean : return ToNullableSingle((Boolean)p);
5372 }
5373
5374 // Nullable Types
5375 //
5376 if (type.IsGenericType)
5377 {
5378 if (p is Boolean?) return ToNullableSingle((Boolean?) p);
5379 if (p is Byte?) return ToNullableSingle((Byte?) p);
5380 if (p is Char?) return ToNullableSingle((Char?) p);
5381 if (p is Decimal?) return ToNullableSingle((Decimal?) p);
5382 if (p is Double?) return ToNullableSingle((Double?) p);
5383 if (p is Int16?) return ToNullableSingle((Int16?) p);
5384 if (p is Int32?) return ToNullableSingle((Int32?) p);
5385 if (p is Int64?) return ToNullableSingle((Int64?) p);
5386 if (p is SByte?) return ToNullableSingle((SByte?) p);
5387 if (p is UInt16?) return ToNullableSingle((UInt16?) p);
5388 if (p is UInt32?) return ToNullableSingle((UInt32?) p);
5389 if (p is UInt64?) return ToNullableSingle((UInt64?) p);
5390 }
5391
5392 // Other Types
5393 //
5394 if (p is Binary) return ToNullableSingle((Binary) p);
5395 if (p is Byte[]) return ToNullableSingle((Byte[]) p);
5396
5397 #if !SILVERLIGHT
5398
5399 // Sql Types
5400 //
5401 if (p is INullable)
5402 {
5403 if (p is SqlBoolean) return ToNullableSingle((SqlBoolean)p);
5404 if (p is SqlByte) return ToNullableSingle((SqlByte) p);
5405 if (p is SqlDecimal) return ToNullableSingle((SqlDecimal)p);
5406 if (p is SqlDouble) return ToNullableSingle((SqlDouble) p);
5407 if (p is SqlInt16) return ToNullableSingle((SqlInt16) p);
5408 if (p is SqlInt32) return ToNullableSingle((SqlInt32) p);
5409 if (p is SqlInt64) return ToNullableSingle((SqlInt64) p);
5410 if (p is SqlMoney) return ToNullableSingle((SqlMoney) p);
5411 if (p is SqlSingle) return ToNullableSingle((SqlSingle) p);
5412 if (p is SqlString) return ToNullableSingle((SqlString) p);
5413 }
5414
5415 #endif
5416
5417 throw CreateInvalidCastException(p.GetType(), typeof(Single?));
5418 }
5419
5420 #endregion
5421
5422 #region TimeSpan?
5423
5424 // Simple Types
5425 //
5426 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5427 public static TimeSpan? ToNullableTimeSpan(DateTime p) { return p - DateTime.MinValue; }
5428 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5429 public static TimeSpan? ToNullableTimeSpan(DateTimeOffset p) { return p - DateTimeOffset.MinValue; }
5430 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5431 public static TimeSpan? ToNullableTimeSpan(Double p) { return TimeSpan.FromDays (p); }
5432 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5433 public static TimeSpan? ToNullableTimeSpan(Int64 p) { return TimeSpan.FromTicks(p); }
5434 /// <summary>Converts the value from <c>String</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5435 public static TimeSpan? ToNullableTimeSpan(String p) { return p == null? (TimeSpan?)null : TimeSpan.Parse(p); }
5436 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5437 public static TimeSpan? ToNullableTimeSpan(TimeSpan p) { return p; }
5438
5439 // Nullable Types
5440 //
5441 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5442 public static TimeSpan? ToNullableTimeSpan(DateTime? p) { return p.HasValue ? p.Value - DateTime.MinValue : (TimeSpan?)null; }
5443 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5444 public static TimeSpan? ToNullableTimeSpan(DateTimeOffset? p) { return p.HasValue ? p.Value - DateTimeOffset.MinValue : (TimeSpan?)null; }
5445 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5446 public static TimeSpan? ToNullableTimeSpan(Double? p) { return p.HasValue ? TimeSpan.FromDays (p.Value) : (TimeSpan?)null; }
5447 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5448 public static TimeSpan? ToNullableTimeSpan(Int64? p) { return p.HasValue ? TimeSpan.FromTicks(p.Value) : (TimeSpan?)null; }
5449
5450 // Other Types
5451 //
5452 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5453 public static TimeSpan? ToNullableTimeSpan(Binary p) { return p == null || p.Length == 0? (TimeSpan?)null : TimeSpan.FromTicks(ToInt64(p.ToArray())); }
5454 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5455 public static TimeSpan? ToNullableTimeSpan(Byte[] p) { return p == null || p.Length == 0? (TimeSpan?)null : TimeSpan.FromTicks(ToInt64(p)); }
5456
5457 #if !SILVERLIGHT
5458
5459 // Sql Types
5460 //
5461 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5462 public static TimeSpan? ToNullableTimeSpan(SqlDateTime p) { return p.IsNull ? (TimeSpan?)null : p.Value - DateTime.MinValue; }
5463 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5464 public static TimeSpan? ToNullableTimeSpan(SqlDouble p) { return p.IsNull ? (TimeSpan?)null : TimeSpan.FromDays(p.Value); }
5465 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5466 public static TimeSpan? ToNullableTimeSpan(SqlInt64 p) { return p.IsNull ? (TimeSpan?)null : TimeSpan.FromTicks(p.Value); }
5467 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5468 public static TimeSpan? ToNullableTimeSpan(SqlString p) { return p.IsNull ? (TimeSpan?)null : TimeSpan.Parse(p.Value); }
5469
5470 #endif
5471
5472 // From Object
5473 //
5474 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>TimeSpan?</c> value.</summary>
5475 public static TimeSpan? ToNullableTimeSpan(object p)
5476 {
5477 if (p == null) return null;
5478
5479 if (p is TimeSpan?) return (TimeSpan?)p;
5480
5481 var type = p.GetType();
5482
5483 // Primitive types
5484 //
5485 switch (Type.GetTypeCode(type))
5486 {
5487 case TypeCode.DBNull : return null;
5488 case TypeCode.DateTime : return ToNullableTimeSpan((DateTime) p);
5489 case TypeCode.Int64 : return ToNullableTimeSpan((Int64) p);
5490 case TypeCode.Double : return ToNullableTimeSpan((Double) p);
5491 case TypeCode.String : return ToNullableTimeSpan((String) p);
5492 }
5493
5494 // Simple Types
5495 //
5496 if (p is DateTimeOffset) return ToNullableTimeSpan((DateTimeOffset) p);
5497 if (p is TimeSpan) return ToNullableTimeSpan((TimeSpan) p);
5498
5499 // Nullable Types
5500 //
5501 if (type.IsGenericType)
5502 {
5503 if (p is DateTime?) return ToNullableTimeSpan((DateTime?) p);
5504 if (p is DateTimeOffset?) return ToNullableTimeSpan((DateTimeOffset?)p);
5505 if (p is Double?) return ToNullableTimeSpan((Double?) p);
5506 if (p is Int64?) return ToNullableTimeSpan((Int64?) p);
5507 }
5508
5509 // Other Types
5510 //
5511 if (p is Binary) return ToNullableTimeSpan((Binary) p);
5512 if (p is Byte[]) return ToNullableTimeSpan((Byte[]) p);
5513
5514 #if !SILVERLIGHT
5515
5516 // Sql Types
5517 //
5518 if (p is INullable)
5519 {
5520 if (p is SqlDateTime) return ToNullableTimeSpan((SqlDateTime) p);
5521 if (p is SqlDouble) return ToNullableTimeSpan((SqlDouble) p);
5522 if (p is SqlInt64) return ToNullableTimeSpan((SqlInt64) p);
5523 if (p is SqlString) return ToNullableTimeSpan((SqlString) p);
5524 }
5525
5526 #endif
5527
5528 throw CreateInvalidCastException(p.GetType(), typeof(TimeSpan?));
5529 }
5530
5531 #endregion
5532
5533 #region UInt16?
5534
5535 // Simple Types
5536 //
5537 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt16?</c> value.</summary>
5538 [CLSCompliant(false)]
5539 public static UInt16? ToNullableUInt16(Boolean p) { return p ? (UInt16?)1 : (UInt16?)0; }
5540 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt16?</c> value.</summary>
5541 [CLSCompliant(false)]
5542 public static UInt16? ToNullableUInt16(Byte p) { return p; }
5543 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt16?</c> value.</summary>
5544 [CLSCompliant(false)]
5545 public static UInt16? ToNullableUInt16(Char p) { return checked((UInt16?)p); }
5546 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt16?</c> value.</summary>
5547 [CLSCompliant(false)]
5548 public static UInt16? ToNullableUInt16(Decimal p) { return checked((UInt16?)p); }
5549 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt16?</c> value.</summary>
5550 [CLSCompliant(false)]
5551 public static UInt16? ToNullableUInt16(Double p) { return checked((UInt16?)p); }
5552 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt16?</c> value.</summary>
5553 [CLSCompliant(false)]
5554 public static UInt16? ToNullableUInt16(Int16 p) { return checked((UInt16?)p); }
5555 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt16?</c> value.</summary>
5556 [CLSCompliant(false)]
5557 public static UInt16? ToNullableUInt16(Int32 p) { return checked((UInt16?)p); }
5558 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt16?</c> value.</summary>
5559 [CLSCompliant(false)]
5560 public static UInt16? ToNullableUInt16(Int64 p) { return checked((UInt16?)p); }
5561 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt16?</c> value.</summary>
5562 [CLSCompliant(false)]
5563 public static UInt16? ToNullableUInt16(SByte p) { return checked((UInt16?)p); }
5564 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt16?</c> value.</summary>
5565 [CLSCompliant(false)]
5566 public static UInt16? ToNullableUInt16(Single p) { return checked((UInt16?)p); }
5567 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt16?</c> value.</summary>
5568 [CLSCompliant(false)]
5569 public static UInt16? ToNullableUInt16(String p) { return p == null? (UInt16?)null : UInt16.Parse(p); }
5570 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt16?</c> value.</summary>
5571 [CLSCompliant(false)]
5572 public static UInt16? ToNullableUInt16(UInt16 p) { return p; }
5573 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt16?</c> value.</summary>
5574 [CLSCompliant(false)]
5575 public static UInt16? ToNullableUInt16(UInt32 p) { return checked((UInt16?)p); }
5576 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt16?</c> value.</summary>
5577 [CLSCompliant(false)]
5578 public static UInt16? ToNullableUInt16(UInt64 p) { return checked((UInt16?)p); }
5579
5580 // Nullable Types
5581 //
5582 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt16?</c> value.</summary>
5583 [CLSCompliant(false)]
5584 public static UInt16? ToNullableUInt16(Boolean? p) { return p.HasValue && p.Value ? (UInt16?)1: (UInt16?)0; }
5585 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt16?</c> value.</summary>
5586 [CLSCompliant(false)]
5587 public static UInt16? ToNullableUInt16(Byte? p) { return p.HasValue ? p.Value : (UInt16?)null; }
5588 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt16?</c> value.</summary>
5589 [CLSCompliant(false)]
5590 public static UInt16? ToNullableUInt16(Char? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5591 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt16?</c> value.</summary>
5592 [CLSCompliant(false)]
5593 public static UInt16? ToNullableUInt16(Decimal? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5594 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt16?</c> value.</summary>
5595 [CLSCompliant(false)]
5596 public static UInt16? ToNullableUInt16(Double? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5597 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt16?</c> value.</summary>
5598 [CLSCompliant(false)]
5599 public static UInt16? ToNullableUInt16(Int16? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5600 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt16?</c> value.</summary>
5601 [CLSCompliant(false)]
5602 public static UInt16? ToNullableUInt16(Int32? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5603 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt16?</c> value.</summary>
5604 [CLSCompliant(false)]
5605 public static UInt16? ToNullableUInt16(Int64? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5606 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt16?</c> value.</summary>
5607 [CLSCompliant(false)]
5608 public static UInt16? ToNullableUInt16(SByte? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5609 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt16?</c> value.</summary>
5610 [CLSCompliant(false)]
5611 public static UInt16? ToNullableUInt16(Single? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5612 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt16?</c> value.</summary>
5613 [CLSCompliant(false)]
5614 public static UInt16? ToNullableUInt16(UInt32? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5615 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt16?</c> value.</summary>
5616 [CLSCompliant(false)]
5617 public static UInt16? ToNullableUInt16(UInt64? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
5618
5619 // Other Types
5620 //
5621 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt16?</c> value.</summary>
5622 [CLSCompliant(false)]
5623 public static UInt16? ToNullableUInt16(Binary p) { return p == null || p.Length == 0 ? (UInt16?)null : BitConverter.ToUInt16(p.ToArray(), 0); }
5624 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt16?</c> value.</summary>
5625 [CLSCompliant(false)]
5626 public static UInt16? ToNullableUInt16(Byte[] p) { return p == null || p.Length == 0 ? (UInt16?)null : BitConverter.ToUInt16(p, 0); }
5627
5628 #if !SILVERLIGHT
5629
5630 // Sql Types
5631 //
5632 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt16?</c> value.</summary>
5633 [CLSCompliant(false)]
5634 public static UInt16? ToNullableUInt16(SqlBoolean p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5635 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt16?</c> value.</summary>
5636 [CLSCompliant(false)]
5637 public static UInt16? ToNullableUInt16(SqlByte p) { return p.IsNull ? (UInt16?)null : p.Value; }
5638 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt16?</c> value.</summary>
5639 [CLSCompliant(false)]
5640 public static UInt16? ToNullableUInt16(SqlDecimal p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5641 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt16?</c> value.</summary>
5642 [CLSCompliant(false)]
5643 public static UInt16? ToNullableUInt16(SqlDouble p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5644 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt16?</c> value.</summary>
5645 [CLSCompliant(false)]
5646 public static UInt16? ToNullableUInt16(SqlInt16 p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5647 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt16?</c> value.</summary>
5648 [CLSCompliant(false)]
5649 public static UInt16? ToNullableUInt16(SqlInt32 p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5650 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt16?</c> value.</summary>
5651 [CLSCompliant(false)]
5652 public static UInt16? ToNullableUInt16(SqlInt64 p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5653 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt16?</c> value.</summary>
5654 [CLSCompliant(false)]
5655 public static UInt16? ToNullableUInt16(SqlMoney p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5656 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt16?</c> value.</summary>
5657 [CLSCompliant(false)]
5658 public static UInt16? ToNullableUInt16(SqlSingle p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5659 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt16?</c> value.</summary>
5660 [CLSCompliant(false)]
5661 public static UInt16? ToNullableUInt16(SqlString p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
5662
5663 #endif
5664
5665 // From Object
5666 //
5667 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt16?</c> value.</summary>
5668 [CLSCompliant(false)]
5669 public static UInt16? ToNullableUInt16(object p)
5670 {
5671 if (p == null) return null;
5672
5673 if (p is UInt16?) return (UInt16?)p;
5674
5675 var type = p.GetType();
5676
5677 // Primitive types
5678 //
5679 switch (Type.GetTypeCode(type))
5680 {
5681 case TypeCode.DBNull : return null;
5682 case TypeCode.UInt16 : return ToNullableUInt16((UInt16) p);
5683 case TypeCode.Byte : return ToNullableUInt16((Byte) p);
5684 case TypeCode.SByte : return ToNullableUInt16((SByte) p);
5685 case TypeCode.Int16 : return ToNullableUInt16((Int16) p);
5686 case TypeCode.Int32 : return ToNullableUInt16((Int32) p);
5687 case TypeCode.Int64 : return ToNullableUInt16((Int64) p);
5688 case TypeCode.UInt32 : return ToNullableUInt16((UInt32) p);
5689 case TypeCode.UInt64 : return ToNullableUInt16((UInt64) p);
5690 case TypeCode.Single : return ToNullableUInt16((Single) p);
5691 case TypeCode.Double : return ToNullableUInt16((Double) p);
5692 case TypeCode.Decimal : return ToNullableUInt16((Decimal)p);
5693 case TypeCode.Char : return ToNullableUInt16((Char) p);
5694 case TypeCode.String : return ToNullableUInt16((String) p);
5695 case TypeCode.Boolean : return ToNullableUInt16((Boolean)p);
5696 }
5697
5698 // Nullable Types
5699 //
5700 if (type.IsGenericType)
5701 {
5702 if (p is Boolean?) return ToNullableUInt16((Boolean?) p);
5703 if (p is Byte?) return ToNullableUInt16((Byte?) p);
5704 if (p is Char?) return ToNullableUInt16((Char?) p);
5705 if (p is Decimal?) return ToNullableUInt16((Decimal?) p);
5706 if (p is Double?) return ToNullableUInt16((Double?) p);
5707 if (p is Int16?) return ToNullableUInt16((Int16?) p);
5708 if (p is Int32?) return ToNullableUInt16((Int32?) p);
5709 if (p is Int64?) return ToNullableUInt16((Int64?) p);
5710 if (p is SByte?) return ToNullableUInt16((SByte?) p);
5711 if (p is Single?) return ToNullableUInt16((Single?) p);
5712 if (p is UInt32?) return ToNullableUInt16((UInt32?) p);
5713 if (p is UInt64?) return ToNullableUInt16((UInt64?) p);
5714 }
5715
5716 // Other Types
5717 //
5718 if (p is Binary) return ToNullableUInt16((Binary) p);
5719 if (p is Byte[]) return ToNullableUInt16((Byte[]) p);
5720
5721 #if !SILVERLIGHT
5722
5723 // Sql Types
5724 //
5725 if (p is INullable)
5726 {
5727 if (p is SqlBoolean) return ToNullableUInt16((SqlBoolean)p);
5728 if (p is SqlByte) return ToNullableUInt16((SqlByte) p);
5729 if (p is SqlDecimal) return ToNullableUInt16((SqlDecimal)p);
5730 if (p is SqlDouble) return ToNullableUInt16((SqlDouble) p);
5731 if (p is SqlInt16) return ToNullableUInt16((SqlInt16) p);
5732 if (p is SqlInt32) return ToNullableUInt16((SqlInt32) p);
5733 if (p is SqlInt64) return ToNullableUInt16((SqlInt64) p);
5734 if (p is SqlMoney) return ToNullableUInt16((SqlMoney) p);
5735 if (p is SqlSingle) return ToNullableUInt16((SqlSingle) p);
5736 if (p is SqlString) return ToNullableUInt16((SqlString) p);
5737 }
5738
5739 #endif
5740
5741 throw CreateInvalidCastException(p.GetType(), typeof(UInt16?));
5742 }
5743
5744 #endregion
5745
5746 #region UInt32?
5747
5748 // Simple Types
5749 //
5750 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt32?</c> value.</summary>
5751 [CLSCompliant(false)]
5752 public static UInt32? ToNullableUInt32(Boolean p) { return p ? (UInt32?)1 : (UInt32?)0; }
5753 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt32?</c> value.</summary>
5754 [CLSCompliant(false)]
5755 public static UInt32? ToNullableUInt32(Byte p) { return p; }
5756 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt32?</c> value.</summary>
5757 [CLSCompliant(false)]
5758 public static UInt32? ToNullableUInt32(Char p) { return checked((UInt32?)p); }
5759 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt32?</c> value.</summary>
5760 [CLSCompliant(false)]
5761 public static UInt32? ToNullableUInt32(Decimal p) { return checked((UInt32?)p); }
5762 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt32?</c> value.</summary>
5763 [CLSCompliant(false)]
5764 public static UInt32? ToNullableUInt32(Double p) { return checked((UInt32?)p); }
5765 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt32?</c> value.</summary>
5766 [CLSCompliant(false)]
5767 public static UInt32? ToNullableUInt32(Int16 p) { return checked((UInt32?)p); }
5768 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt32?</c> value.</summary>
5769 [CLSCompliant(false)]
5770 public static UInt32? ToNullableUInt32(Int32 p) { return checked((UInt32?)p); }
5771 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt32?</c> value.</summary>
5772 [CLSCompliant(false)]
5773 public static UInt32? ToNullableUInt32(Int64 p) { return checked((UInt32?)p); }
5774 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt32?</c> value.</summary>
5775 [CLSCompliant(false)]
5776 public static UInt32? ToNullableUInt32(SByte p) { return checked((UInt32?)p); }
5777 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt32?</c> value.</summary>
5778 [CLSCompliant(false)]
5779 public static UInt32? ToNullableUInt32(Single p) { return checked((UInt32?)p); }
5780 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt32?</c> value.</summary>
5781 [CLSCompliant(false)]
5782 public static UInt32? ToNullableUInt32(String p) { return p == null? (UInt32?)null : UInt32.Parse(p); }
5783 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt32?</c> value.</summary>
5784 [CLSCompliant(false)]
5785 public static UInt32? ToNullableUInt32(UInt16 p) { return p; }
5786 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt32?</c> value.</summary>
5787 [CLSCompliant(false)]
5788 public static UInt32? ToNullableUInt32(UInt32 p) { return p; }
5789 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt32?</c> value.</summary>
5790 [CLSCompliant(false)]
5791 public static UInt32? ToNullableUInt32(UInt64 p) { return checked((UInt32?)p); }
5792
5793 // Nullable Types
5794 //
5795 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt32?</c> value.</summary>
5796 [CLSCompliant(false)]
5797 public static UInt32? ToNullableUInt32(Boolean? p) { return p.HasValue && p.Value ? (UInt32?)1: (UInt32?)0; }
5798 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt32?</c> value.</summary>
5799 [CLSCompliant(false)]
5800 public static UInt32? ToNullableUInt32(Byte? p) { return p.HasValue ? p.Value : (UInt32?)null; }
5801 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt32?</c> value.</summary>
5802 [CLSCompliant(false)]
5803 public static UInt32? ToNullableUInt32(Char? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5804 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt32?</c> value.</summary>
5805 [CLSCompliant(false)]
5806 public static UInt32? ToNullableUInt32(Decimal? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5807 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt32?</c> value.</summary>
5808 [CLSCompliant(false)]
5809 public static UInt32? ToNullableUInt32(Double? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5810 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt32?</c> value.</summary>
5811 [CLSCompliant(false)]
5812 public static UInt32? ToNullableUInt32(Int16? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5813 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt32?</c> value.</summary>
5814 [CLSCompliant(false)]
5815 public static UInt32? ToNullableUInt32(Int32? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5816 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt32?</c> value.</summary>
5817 [CLSCompliant(false)]
5818 public static UInt32? ToNullableUInt32(Int64? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5819 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt32?</c> value.</summary>
5820 [CLSCompliant(false)]
5821 public static UInt32? ToNullableUInt32(SByte? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5822 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt32?</c> value.</summary>
5823 [CLSCompliant(false)]
5824 public static UInt32? ToNullableUInt32(Single? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5825 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt32?</c> value.</summary>
5826 [CLSCompliant(false)]
5827 public static UInt32? ToNullableUInt32(UInt16? p) { return p.HasValue ? p.Value : (UInt32?)null; }
5828 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt32?</c> value.</summary>
5829 [CLSCompliant(false)]
5830 public static UInt32? ToNullableUInt32(UInt64? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
5831
5832 // Other Types
5833 //
5834 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt32?</c> value.</summary>
5835 [CLSCompliant(false)]
5836 public static UInt32? ToNullableUInt32(Binary p) { return p == null || p.Length == 0 ? (UInt32?)null : BitConverter.ToUInt32(p.ToArray(), 0); }
5837 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt32?</c> value.</summary>
5838 [CLSCompliant(false)]
5839 public static UInt32? ToNullableUInt32(Byte[] p) { return p == null || p.Length == 0 ? (UInt32?)null : BitConverter.ToUInt32(p, 0); }
5840
5841 #if !SILVERLIGHT
5842
5843 // Sql Types
5844 //
5845 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt32?</c> value.</summary>
5846 [CLSCompliant(false)]
5847 public static UInt32? ToNullableUInt32(SqlBoolean p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5848 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt32?</c> value.</summary>
5849 [CLSCompliant(false)]
5850 public static UInt32? ToNullableUInt32(SqlByte p) { return p.IsNull ? (UInt32?)null : p.Value; }
5851 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt32?</c> value.</summary>
5852 [CLSCompliant(false)]
5853 public static UInt32? ToNullableUInt32(SqlDecimal p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5854 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt32?</c> value.</summary>
5855 [CLSCompliant(false)]
5856 public static UInt32? ToNullableUInt32(SqlDouble p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5857 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt32?</c> value.</summary>
5858 [CLSCompliant(false)]
5859 public static UInt32? ToNullableUInt32(SqlInt16 p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5860 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt32?</c> value.</summary>
5861 [CLSCompliant(false)]
5862 public static UInt32? ToNullableUInt32(SqlInt32 p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5863 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt32?</c> value.</summary>
5864 [CLSCompliant(false)]
5865 public static UInt32? ToNullableUInt32(SqlInt64 p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5866 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt32?</c> value.</summary>
5867 [CLSCompliant(false)]
5868 public static UInt32? ToNullableUInt32(SqlMoney p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5869 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt32?</c> value.</summary>
5870 [CLSCompliant(false)]
5871 public static UInt32? ToNullableUInt32(SqlSingle p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5872 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt32?</c> value.</summary>
5873 [CLSCompliant(false)]
5874 public static UInt32? ToNullableUInt32(SqlString p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
5875
5876 #endif
5877
5878 // From Object
5879 //
5880 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt32?</c> value.</summary>
5881 [CLSCompliant(false)]
5882 public static UInt32? ToNullableUInt32(object p)
5883 {
5884 if (p == null) return null;
5885
5886 if (p is UInt32?) return (UInt32?)p;
5887
5888 var type = p.GetType();
5889
5890 // Primitive types
5891 //
5892 switch (Type.GetTypeCode(type))
5893 {
5894 case TypeCode.DBNull : return null;
5895 case TypeCode.Byte : return ToNullableUInt32((Byte) p);
5896 case TypeCode.UInt16 : return ToNullableUInt32((UInt16) p);
5897 case TypeCode.UInt32 : return ToNullableUInt32((UInt32) p);
5898 case TypeCode.SByte : return ToNullableUInt32((SByte) p);
5899 case TypeCode.Int16 : return ToNullableUInt32((Int16) p);
5900 case TypeCode.Int32 : return ToNullableUInt32((Int32) p);
5901 case TypeCode.Int64 : return ToNullableUInt32((Int64) p);
5902 case TypeCode.UInt64 : return ToNullableUInt32((UInt64) p);
5903 case TypeCode.Single : return ToNullableUInt32((Single) p);
5904 case TypeCode.Double : return ToNullableUInt32((Double) p);
5905 case TypeCode.Decimal : return ToNullableUInt32((Decimal)p);
5906 case TypeCode.Char : return ToNullableUInt32((Char) p);
5907 case TypeCode.String : return ToNullableUInt32((String) p);
5908 case TypeCode.Boolean : return ToNullableUInt32((Boolean)p);
5909 }
5910
5911 // Nullable Types
5912 //
5913 if (type.IsGenericType)
5914 {
5915 if (p is Boolean?) return ToNullableUInt32((Boolean?) p);
5916 if (p is Byte?) return ToNullableUInt32((Byte?) p);
5917 if (p is Char?) return ToNullableUInt32((Char?) p);
5918 if (p is Decimal?) return ToNullableUInt32((Decimal?) p);
5919 if (p is Double?) return ToNullableUInt32((Double?) p);
5920 if (p is Int16?) return ToNullableUInt32((Int16?) p);
5921 if (p is Int32?) return ToNullableUInt32((Int32?) p);
5922 if (p is Int64?) return ToNullableUInt32((Int64?) p);
5923 if (p is SByte?) return ToNullableUInt32((SByte?) p);
5924 if (p is Single?) return ToNullableUInt32((Single?) p);
5925 if (p is UInt16?) return ToNullableUInt32((UInt16?) p);
5926 if (p is UInt64?) return ToNullableUInt32((UInt64?) p);
5927 }
5928
5929 // Other Types
5930 //
5931 if (p is Binary) return ToNullableUInt32((Binary) p);
5932 if (p is Byte[]) return ToNullableUInt32((Byte[]) p);
5933
5934 #if !SILVERLIGHT
5935
5936 // Sql Types
5937 //
5938 if (p is INullable)
5939 {
5940 if (p is SqlBoolean) return ToNullableUInt32((SqlBoolean)p);
5941 if (p is SqlByte) return ToNullableUInt32((SqlByte) p);
5942 if (p is SqlDecimal) return ToNullableUInt32((SqlDecimal)p);
5943 if (p is SqlDouble) return ToNullableUInt32((SqlDouble) p);
5944 if (p is SqlInt16) return ToNullableUInt32((SqlInt16) p);
5945 if (p is SqlInt32) return ToNullableUInt32((SqlInt32) p);
5946 if (p is SqlInt64) return ToNullableUInt32((SqlInt64) p);
5947 if (p is SqlMoney) return ToNullableUInt32((SqlMoney) p);
5948 if (p is SqlSingle) return ToNullableUInt32((SqlSingle) p);
5949 if (p is SqlString) return ToNullableUInt32((SqlString) p);
5950 }
5951
5952 #endif
5953
5954 throw CreateInvalidCastException(p.GetType(), typeof(UInt32?));
5955 }
5956
5957 #endregion
5958
5959 #region UInt64?
5960
5961 // Simple Types
5962 //
5963 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt64?</c> value.</summary>
5964 [CLSCompliant(false)]
5965 public static UInt64? ToNullableUInt64(Boolean p) { return p ? (UInt64?)1 : (UInt64?)0; }
5966 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt64?</c> value.</summary>
5967 [CLSCompliant(false)]
5968 public static UInt64? ToNullableUInt64(Byte p) { return p; }
5969 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt64?</c> value.</summary>
5970 [CLSCompliant(false)]
5971 public static UInt64? ToNullableUInt64(Char p) { return checked((UInt64?)p); }
5972 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt64?</c> value.</summary>
5973 [CLSCompliant(false)]
5974 public static UInt64? ToNullableUInt64(Decimal p) { return checked((UInt64?)p); }
5975 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt64?</c> value.</summary>
5976 [CLSCompliant(false)]
5977 public static UInt64? ToNullableUInt64(Double p) { return checked((UInt64?)p); }
5978 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt64?</c> value.</summary>
5979 [CLSCompliant(false)]
5980 public static UInt64? ToNullableUInt64(Int16 p) { return checked((UInt64?)p); }
5981 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt64?</c> value.</summary>
5982 [CLSCompliant(false)]
5983 public static UInt64? ToNullableUInt64(Int32 p) { return checked((UInt64?)p); }
5984 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt64?</c> value.</summary>
5985 [CLSCompliant(false)]
5986 public static UInt64? ToNullableUInt64(Int64 p) { return checked((UInt64?)p); }
5987 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt64?</c> value.</summary>
5988 [CLSCompliant(false)]
5989 public static UInt64? ToNullableUInt64(SByte p) { return checked((UInt64?)p); }
5990 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt64?</c> value.</summary>
5991 [CLSCompliant(false)]
5992 public static UInt64? ToNullableUInt64(Single p) { return checked((UInt64?)p); }
5993 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt64?</c> value.</summary>
5994 [CLSCompliant(false)]
5995 public static UInt64? ToNullableUInt64(String p) { return p == null? (UInt64?)null : UInt64.Parse(p); }
5996 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt64?</c> value.</summary>
5997 [CLSCompliant(false)]
5998 public static UInt64? ToNullableUInt64(UInt16 p) { return p; }
5999 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt64?</c> value.</summary>
6000 [CLSCompliant(false)]
6001 public static UInt64? ToNullableUInt64(UInt32 p) { return p; }
6002 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt64?</c> value.</summary>
6003 [CLSCompliant(false)]
6004 public static UInt64? ToNullableUInt64(UInt64 p) { return p; }
6005
6006 // Nullable Types
6007 //
6008 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt64?</c> value.</summary>
6009 [CLSCompliant(false)]
6010 public static UInt64? ToNullableUInt64(Boolean? p) { return p.HasValue && p.Value ? (UInt64?)1: (UInt64?)0; }
6011 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt64?</c> value.</summary>
6012 [CLSCompliant(false)]
6013 public static UInt64? ToNullableUInt64(Byte? p) { return p.HasValue ? p.Value : (UInt64?)null; }
6014 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt64?</c> value.</summary>
6015 [CLSCompliant(false)]
6016 public static UInt64? ToNullableUInt64(Char? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6017 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt64?</c> value.</summary>
6018 [CLSCompliant(false)]
6019 public static UInt64? ToNullableUInt64(Decimal? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6020 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt64?</c> value.</summary>
6021 [CLSCompliant(false)]
6022 public static UInt64? ToNullableUInt64(Double? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6023 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt64?</c> value.</summary>
6024 [CLSCompliant(false)]
6025 public static UInt64? ToNullableUInt64(Int16? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6026 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt64?</c> value.</summary>
6027 [CLSCompliant(false)]
6028 public static UInt64? ToNullableUInt64(Int32? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6029 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt64?</c> value.</summary>
6030 [CLSCompliant(false)]
6031 public static UInt64? ToNullableUInt64(Int64? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6032 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt64?</c> value.</summary>
6033 [CLSCompliant(false)]
6034 public static UInt64? ToNullableUInt64(SByte? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6035 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt64?</c> value.</summary>
6036 [CLSCompliant(false)]
6037 public static UInt64? ToNullableUInt64(Single? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
6038 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt64?</c> value.</summary>
6039 [CLSCompliant(false)]
6040 public static UInt64? ToNullableUInt64(UInt16? p) { return p.HasValue ? p.Value : (UInt64?)null; }
6041 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt64?</c> value.</summary>
6042 [CLSCompliant(false)]
6043 public static UInt64? ToNullableUInt64(UInt32? p) { return p.HasValue ? p.Value : (UInt64?)null; }
6044
6045 // Other Types
6046 //
6047 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt64?</c> value.</summary>
6048 [CLSCompliant(false)]
6049 public static UInt64? ToNullableUInt64(Binary p) { return p == null || p.Length == 0 ? (UInt64?)null : BitConverter.ToUInt64(p.ToArray(), 0); }
6050 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt64?</c> value.</summary>
6051 [CLSCompliant(false)]
6052 public static UInt64? ToNullableUInt64(Byte[] p) { return p == null || p.Length == 0 ? (UInt64?)null : BitConverter.ToUInt64(p, 0); }
6053
6054 #if !SILVERLIGHT
6055
6056 // Sql Types
6057 //
6058 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt64?</c> value.</summary>
6059 [CLSCompliant(false)]
6060 public static UInt64? ToNullableUInt64(SqlBoolean p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6061 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt64?</c> value.</summary>
6062 [CLSCompliant(false)]
6063 public static UInt64? ToNullableUInt64(SqlByte p) { return p.IsNull ? (UInt64?)null : p.Value; }
6064 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt64?</c> value.</summary>
6065 [CLSCompliant(false)]
6066 public static UInt64? ToNullableUInt64(SqlDecimal p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6067 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt64?</c> value.</summary>
6068 [CLSCompliant(false)]
6069 public static UInt64? ToNullableUInt64(SqlDouble p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6070 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt64?</c> value.</summary>
6071 [CLSCompliant(false)]
6072 public static UInt64? ToNullableUInt64(SqlInt16 p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6073 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt64?</c> value.</summary>
6074 [CLSCompliant(false)]
6075 public static UInt64? ToNullableUInt64(SqlInt32 p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6076 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt64?</c> value.</summary>
6077 [CLSCompliant(false)]
6078 public static UInt64? ToNullableUInt64(SqlInt64 p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6079 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt64?</c> value.</summary>
6080 [CLSCompliant(false)]
6081 public static UInt64? ToNullableUInt64(SqlMoney p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6082 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt64?</c> value.</summary>
6083 [CLSCompliant(false)]
6084 public static UInt64? ToNullableUInt64(SqlSingle p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6085 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt64?</c> value.</summary>
6086 [CLSCompliant(false)]
6087 public static UInt64? ToNullableUInt64(SqlString p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
6088
6089 #endif
6090
6091 // From Object
6092 //
6093 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt64?</c> value.</summary>
6094 [CLSCompliant(false)]
6095 public static UInt64? ToNullableUInt64(object p)
6096 {
6097 if (p == null) return null;
6098
6099 if (p is UInt64?) return (UInt64?)p;
6100
6101 var type = p.GetType();
6102
6103 // Primitive types
6104 //
6105 switch (Type.GetTypeCode(type))
6106 {
6107 case TypeCode.DBNull : return null;
6108 case TypeCode.Byte : return ToNullableUInt64((Byte) p);
6109 case TypeCode.UInt16 : return ToNullableUInt64((UInt16) p);
6110 case TypeCode.UInt32 : return ToNullableUInt64((UInt32) p);
6111 case TypeCode.UInt64 : return ToNullableUInt64((UInt64) p);
6112 case TypeCode.SByte : return ToNullableUInt64((SByte) p);
6113 case TypeCode.Int16 : return ToNullableUInt64((Int16) p);
6114 case TypeCode.Int32 : return ToNullableUInt64((Int32) p);
6115 case TypeCode.Int64 : return ToNullableUInt64((Int64) p);
6116 case TypeCode.Single : return ToNullableUInt64((Single) p);
6117 case TypeCode.Double : return ToNullableUInt64((Double) p);
6118 case TypeCode.Decimal : return ToNullableUInt64((Decimal)p);
6119 case TypeCode.Char : return ToNullableUInt64((Char) p);
6120 case TypeCode.String : return ToNullableUInt64((String) p);
6121 case TypeCode.Boolean : return ToNullableUInt64((Boolean)p);
6122 }
6123
6124 // Nullable Types
6125 //
6126 if (type.IsGenericType)
6127 {
6128 if (p is Boolean?) return ToNullableUInt64((Boolean?) p);
6129 if (p is Byte?) return ToNullableUInt64((Byte?) p);
6130 if (p is Char?) return ToNullableUInt64((Char?) p);
6131 if (p is Decimal?) return ToNullableUInt64((Decimal?) p);
6132 if (p is Double?) return ToNullableUInt64((Double?) p);
6133 if (p is Int16?) return ToNullableUInt64((Int16?) p);
6134 if (p is Int32?) return ToNullableUInt64((Int32?) p);
6135 if (p is Int64?) return ToNullableUInt64((Int64?) p);
6136 if (p is SByte?) return ToNullableUInt64((SByte?) p);
6137 if (p is Single?) return ToNullableUInt64((Single?) p);
6138 if (p is UInt16?) return ToNullableUInt64((UInt16?) p);
6139 if (p is UInt32?) return ToNullableUInt64((UInt32?) p);
6140 }
6141
6142 // Other Types
6143 //
6144 if (p is Binary) return ToNullableUInt64((Binary) p);
6145 if (p is Byte[]) return ToNullableUInt64((Byte[]) p);
6146
6147 #if !SILVERLIGHT
6148
6149 // Sql Types
6150 //
6151 if (p is INullable)
6152 {
6153 if (p is SqlBoolean) return ToNullableUInt64((SqlBoolean)p);
6154 if (p is SqlByte) return ToNullableUInt64((SqlByte) p);
6155 if (p is SqlDecimal) return ToNullableUInt64((SqlDecimal)p);
6156 if (p is SqlDouble) return ToNullableUInt64((SqlDouble) p);
6157 if (p is SqlInt16) return ToNullableUInt64((SqlInt16) p);
6158 if (p is SqlInt32) return ToNullableUInt64((SqlInt32) p);
6159 if (p is SqlInt64) return ToNullableUInt64((SqlInt64) p);
6160 if (p is SqlMoney) return ToNullableUInt64((SqlMoney) p);
6161 if (p is SqlSingle) return ToNullableUInt64((SqlSingle) p);
6162 if (p is SqlString) return ToNullableUInt64((SqlString) p);
6163 }
6164
6165 #endif
6166
6167 throw CreateInvalidCastException(p.GetType(), typeof(UInt64?));
6168 }
6169
6170 #endregion
6171
6172 #endregion
6173
6174 #region Sql Types
6175
6176 #region SqlBinary
6177
6178 #if !SILVERLIGHT
6179
6180 // Simple Types
6181 //
6182 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlBinary</c> value.</summary>
6183 public static SqlBinary ToSqlBinary(Guid p) { return p == Guid.Empty? SqlBinary.Null : new SqlGuid(p).ToSqlBinary(); }
6184
6185 // Nullable Types
6186 //
6187 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlBinary</c> value.</summary>
6188 public static SqlBinary ToSqlBinary(Guid? p) { return p.HasValue ? new SqlGuid(p.Value).ToSqlBinary(): SqlBinary.Null; }
6189
6190 // Sql Types
6191 //
6192 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>SqlBinary</c> value.</summary>
6193 public static SqlBinary ToSqlBinary(SqlBytes p) { return p.ToSqlBinary(); }
6194 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>SqlBinary</c> value.</summary>
6195 public static SqlBinary ToSqlBinary(SqlGuid p) { return p.ToSqlBinary(); }
6196
6197 // Other Types
6198 //
6199 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlBinary</c> value.</summary>
6200 public static SqlBinary ToSqlBinary(Binary p) { return p == null ? SqlBinary.Null : p.ToArray(); }
6201 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlBinary</c> value.</summary>
6202 public static SqlBinary ToSqlBinary(Byte[] p) { return p; }
6203
6204 // From Object
6205 //
6206 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlBinary</c> value.</summary>
6207 public static SqlBinary ToSqlBinary(object p)
6208 {
6209 if (p == null || p is DBNull) return SqlBinary.Null;
6210
6211 if (p is SqlBinary) return (SqlBinary)p;
6212
6213 // Simple Types
6214 //
6215 if (p is Guid) return ToSqlBinary((Guid) p);
6216
6217 // Nullable Types
6218 //
6219 var type = p.GetType();
6220
6221 if (type.IsGenericType)
6222 {
6223 if (p is Guid?) return ToSqlBinary((Guid?) p);
6224 }
6225
6226 // Sql Types
6227 //
6228 if (p is INullable)
6229 {
6230 if (p is SqlBytes) return ToSqlBinary((SqlBytes)p);
6231 if (p is SqlGuid) return ToSqlBinary((SqlGuid) p);
6232 }
6233
6234 // Other Types
6235 //
6236 if (p is Binary) return ToSqlBinary((Binary) p);
6237 if (p is Byte[]) return ToSqlBinary((Byte[]) p);
6238
6239 throw CreateInvalidCastException(p.GetType(), typeof(SqlBinary));
6240 }
6241
6242 #endif
6243
6244 #endregion
6245
6246 #region SqlBoolean
6247
6248 #if !SILVERLIGHT
6249
6250 // Simple Types
6251 //
6252 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6253 public static SqlBoolean ToSqlBoolean(Boolean p) { return p; }
6254 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6255 public static SqlBoolean ToSqlBoolean(Byte p) { return p != 0; }
6256 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6257 public static SqlBoolean ToSqlBoolean(Char p) { return ToBoolean(p); }
6258 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6259 public static SqlBoolean ToSqlBoolean(Decimal p) { return p != 0; }
6260 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6261 public static SqlBoolean ToSqlBoolean(Double p) { return p != 0; }
6262 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6263 public static SqlBoolean ToSqlBoolean(Int16 p) { return p != 0; }
6264 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6265 public static SqlBoolean ToSqlBoolean(Int32 p) { return p != 0; }
6266 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6267 public static SqlBoolean ToSqlBoolean(Int64 p) { return p != 0; }
6268 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6269 [CLSCompliant(false)]
6270 public static SqlBoolean ToSqlBoolean(SByte p) { return p != 0; }
6271 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6272 public static SqlBoolean ToSqlBoolean(Single p) { return p != 0; }
6273 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6274 public static SqlBoolean ToSqlBoolean(String p) { return p == null? SqlBoolean.Null : p.Length == 1 ? ToBoolean(p[0]) : Boolean.Parse(p); }
6275 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6276 [CLSCompliant(false)]
6277 public static SqlBoolean ToSqlBoolean(UInt16 p) { return p != 0; }
6278 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6279 [CLSCompliant(false)]
6280 public static SqlBoolean ToSqlBoolean(UInt32 p) { return p != 0; }
6281 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6282 [CLSCompliant(false)]
6283 public static SqlBoolean ToSqlBoolean(UInt64 p) { return p != 0; }
6284
6285 // Nullable Types
6286 //
6287 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6288 public static SqlBoolean ToSqlBoolean(Boolean? p) { return p.HasValue ? p.Value : SqlBoolean.Null; }
6289 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6290 public static SqlBoolean ToSqlBoolean(Byte? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6291 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6292 public static SqlBoolean ToSqlBoolean(Char? p) { return p.HasValue && ToBoolean(p.Value); }
6293 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6294 public static SqlBoolean ToSqlBoolean(Decimal? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6295 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6296 public static SqlBoolean ToSqlBoolean(Double? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6297 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6298 public static SqlBoolean ToSqlBoolean(Int16? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6299 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6300 public static SqlBoolean ToSqlBoolean(Int32? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6301 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6302 public static SqlBoolean ToSqlBoolean(Int64? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6303 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6304 [CLSCompliant(false)]
6305 public static SqlBoolean ToSqlBoolean(SByte? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6306 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6307 public static SqlBoolean ToSqlBoolean(Single? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6308 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6309 [CLSCompliant(false)]
6310 public static SqlBoolean ToSqlBoolean(UInt16? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6311 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6312 [CLSCompliant(false)]
6313 public static SqlBoolean ToSqlBoolean(UInt32? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6314 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6315 [CLSCompliant(false)]
6316 public static SqlBoolean ToSqlBoolean(UInt64? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
6317
6318 // Sql Types
6319 //
6320 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6321 public static SqlBoolean ToSqlBoolean(SqlByte p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6322 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6323 public static SqlBoolean ToSqlBoolean(SqlDecimal p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6324 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6325 public static SqlBoolean ToSqlBoolean(SqlDouble p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6326 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6327 public static SqlBoolean ToSqlBoolean(SqlInt16 p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6328 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6329 public static SqlBoolean ToSqlBoolean(SqlInt32 p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6330 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6331 public static SqlBoolean ToSqlBoolean(SqlInt64 p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6332 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6333 public static SqlBoolean ToSqlBoolean(SqlMoney p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6334 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6335 public static SqlBoolean ToSqlBoolean(SqlSingle p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6336 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6337 public static SqlBoolean ToSqlBoolean(SqlString p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
6338
6339 // Other Types
6340 //
6341 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6342 public static SqlBoolean ToSqlBoolean(Binary p) { return p == null || p.Length == 0 ? SqlBoolean.Null : BitConverter.ToBoolean(p.ToArray(), 0); }
6343 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6344 public static SqlBoolean ToSqlBoolean(Byte[] p) { return p == null || p.Length == 0 ? SqlBoolean.Null : BitConverter.ToBoolean(p, 0); }
6345
6346 // From Object
6347 //
6348 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlBoolean</c> value.</summary>
6349 public static SqlBoolean ToSqlBoolean(object p)
6350 {
6351 if (p == null) return SqlBoolean.Null;
6352
6353 if (p is SqlBoolean) return (SqlBoolean)p;
6354
6355 var type = p.GetType();
6356
6357 // Primitive types
6358 //
6359 switch (Type.GetTypeCode(type))
6360 {
6361 case TypeCode.DBNull : return SqlBoolean.Null;
6362 case TypeCode.String : return ToSqlBoolean((String) p);
6363 case TypeCode.Boolean : return ToSqlBoolean((Boolean) p);
6364 case TypeCode.Char : return ToSqlBoolean((Char) p);
6365 case TypeCode.SByte : return ToSqlBoolean((SByte) p);
6366 case TypeCode.Int16 : return ToSqlBoolean((Int16) p);
6367 case TypeCode.Int32 : return ToSqlBoolean((Int32) p);
6368 case TypeCode.Int64 : return ToSqlBoolean((Int64) p);
6369 case TypeCode.Byte : return ToSqlBoolean((Byte) p);
6370 case TypeCode.UInt16 : return ToSqlBoolean((UInt16) p);
6371 case TypeCode.UInt32 : return ToSqlBoolean((UInt32) p);
6372 case TypeCode.UInt64 : return ToSqlBoolean((UInt64) p);
6373 case TypeCode.Single : return ToSqlBoolean((Single) p);
6374 case TypeCode.Double : return ToSqlBoolean((Double) p);
6375 case TypeCode.Decimal : return ToSqlBoolean((Decimal) p);
6376 }
6377
6378 // Nullable Types
6379 //
6380 if (type.IsGenericType)
6381 {
6382 if (p is Boolean?) return ToSqlBoolean((Boolean?) p);
6383 if (p is Byte?) return ToSqlBoolean((Byte?) p);
6384 if (p is Char?) return ToSqlBoolean((Char?) p);
6385 if (p is Decimal?) return ToSqlBoolean((Decimal?) p);
6386 if (p is Double?) return ToSqlBoolean((Double?) p);
6387 if (p is Int16?) return ToSqlBoolean((Int16?) p);
6388 if (p is Int32?) return ToSqlBoolean((Int32?) p);
6389 if (p is Int64?) return ToSqlBoolean((Int64?) p);
6390 if (p is SByte?) return ToSqlBoolean((SByte?) p);
6391 if (p is Single?) return ToSqlBoolean((Single?) p);
6392 if (p is UInt16?) return ToSqlBoolean((UInt16?) p);
6393 if (p is UInt32?) return ToSqlBoolean((UInt32?) p);
6394 if (p is UInt64?) return ToSqlBoolean((UInt64?) p);
6395 }
6396
6397 // Sql Types
6398 //
6399 if (p is INullable)
6400 {
6401 if (p is SqlByte) return ToSqlBoolean((SqlByte) p);
6402 if (p is SqlDecimal) return ToSqlBoolean((SqlDecimal)p);
6403 if (p is SqlDouble) return ToSqlBoolean((SqlDouble) p);
6404 if (p is SqlInt16) return ToSqlBoolean((SqlInt16) p);
6405 if (p is SqlInt32) return ToSqlBoolean((SqlInt32) p);
6406 if (p is SqlInt64) return ToSqlBoolean((SqlInt64) p);
6407 if (p is SqlMoney) return ToSqlBoolean((SqlMoney) p);
6408 if (p is SqlSingle) return ToSqlBoolean((SqlSingle) p);
6409 if (p is SqlString) return ToSqlBoolean((SqlString) p);
6410 }
6411
6412 // Other Types
6413 //
6414 if (p is Binary) return ToSqlBoolean((Binary) p);
6415 if (p is Byte[]) return ToSqlBoolean((Byte[]) p);
6416
6417 throw CreateInvalidCastException(p.GetType(), typeof(SqlBoolean));
6418 }
6419
6420 #endif
6421
6422 #endregion
6423
6424 #region SqlByte
6425
6426 #if !SILVERLIGHT
6427
6428 // Simple Types
6429 //
6430 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlByte</c> value.</summary>
6431 public static SqlByte ToSqlByte(Boolean p) { return p ? (SqlByte)1 : (SqlByte)0; }
6432 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlByte</c> value.</summary>
6433 public static SqlByte ToSqlByte(Byte p) { return p; }
6434 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlByte</c> value.</summary>
6435 public static SqlByte ToSqlByte(Char p) { return checked((Byte)p); }
6436 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlByte</c> value.</summary>
6437 public static SqlByte ToSqlByte(Decimal p) { return checked((Byte)p); }
6438 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlByte</c> value.</summary>
6439 public static SqlByte ToSqlByte(Double p) { return checked((Byte)p); }
6440 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlByte</c> value.</summary>
6441 public static SqlByte ToSqlByte(Int16 p) { return checked((Byte)p); }
6442 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlByte</c> value.</summary>
6443 public static SqlByte ToSqlByte(Int32 p) { return checked((Byte)p); }
6444 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlByte</c> value.</summary>
6445 public static SqlByte ToSqlByte(Int64 p) { return checked((Byte)p); }
6446 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlByte</c> value.</summary>
6447 [CLSCompliant(false)]
6448 public static SqlByte ToSqlByte(SByte p) { return checked((Byte)p); }
6449 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlByte</c> value.</summary>
6450 public static SqlByte ToSqlByte(Single p) { return checked((Byte)p); }
6451 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlByte</c> value.</summary>
6452 public static SqlByte ToSqlByte(String p) { return p == null? SqlByte.Null : Byte.Parse(p); }
6453 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlByte</c> value.</summary>
6454 [CLSCompliant(false)]
6455 public static SqlByte ToSqlByte(UInt16 p) { return checked((Byte)p); }
6456 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlByte</c> value.</summary>
6457 [CLSCompliant(false)]
6458 public static SqlByte ToSqlByte(UInt32 p) { return checked((Byte)p); }
6459 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlByte</c> value.</summary>
6460 [CLSCompliant(false)]
6461 public static SqlByte ToSqlByte(UInt64 p) { return checked((Byte)p); }
6462
6463 // Nullable Types
6464 //
6465 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlByte</c> value.</summary>
6466 public static SqlByte ToSqlByte(Boolean? p) { return p.HasValue && p.Value ? (SqlByte)1: (SqlByte)0; }
6467 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlByte</c> value.</summary>
6468 public static SqlByte ToSqlByte(Byte? p) { return p.HasValue ? p.Value : SqlByte.Null; }
6469 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlByte</c> value.</summary>
6470 public static SqlByte ToSqlByte(Char? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6471 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlByte</c> value.</summary>
6472 public static SqlByte ToSqlByte(Decimal? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6473 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlByte</c> value.</summary>
6474 public static SqlByte ToSqlByte(Double? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6475 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlByte</c> value.</summary>
6476 public static SqlByte ToSqlByte(Int16? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6477 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlByte</c> value.</summary>
6478 public static SqlByte ToSqlByte(Int32? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6479 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlByte</c> value.</summary>
6480 public static SqlByte ToSqlByte(Int64? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6481 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlByte</c> value.</summary>
6482 [CLSCompliant(false)]
6483 public static SqlByte ToSqlByte(SByte? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6484 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlByte</c> value.</summary>
6485 public static SqlByte ToSqlByte(Single? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6486 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlByte</c> value.</summary>
6487 [CLSCompliant(false)]
6488 public static SqlByte ToSqlByte(UInt16? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6489 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlByte</c> value.</summary>
6490 [CLSCompliant(false)]
6491 public static SqlByte ToSqlByte(UInt32? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6492 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlByte</c> value.</summary>
6493 [CLSCompliant(false)]
6494 public static SqlByte ToSqlByte(UInt64? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
6495
6496 // Sql Types
6497 //
6498 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlByte</c> value.</summary>
6499 public static SqlByte ToSqlByte(SqlBoolean p) { return p.ToSqlByte(); }
6500 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlByte</c> value.</summary>
6501 public static SqlByte ToSqlByte(SqlDecimal p) { return p.ToSqlByte(); }
6502 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlByte</c> value.</summary>
6503 public static SqlByte ToSqlByte(SqlDouble p) { return p.ToSqlByte(); }
6504 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlByte</c> value.</summary>
6505 public static SqlByte ToSqlByte(SqlInt16 p) { return p.ToSqlByte(); }
6506 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlByte</c> value.</summary>
6507 public static SqlByte ToSqlByte(SqlInt32 p) { return p.ToSqlByte(); }
6508 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlByte</c> value.</summary>
6509 public static SqlByte ToSqlByte(SqlInt64 p) { return p.ToSqlByte(); }
6510 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlByte</c> value.</summary>
6511 public static SqlByte ToSqlByte(SqlMoney p) { return p.ToSqlByte(); }
6512 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlByte</c> value.</summary>
6513 public static SqlByte ToSqlByte(SqlSingle p) { return p.ToSqlByte(); }
6514 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlByte</c> value.</summary>
6515 public static SqlByte ToSqlByte(SqlString p) { return p.ToSqlByte(); }
6516
6517 // Other Types
6518 //
6519 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlByte</c> value.</summary>
6520 public static SqlByte ToSqlByte(Binary p) { return p == null || p.Length == 0 ? SqlByte.Null : p.ToArray()[0]; }
6521 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlByte</c> value.</summary>
6522 public static SqlByte ToSqlByte(Byte[] p) { return p == null || p.Length == 0 ? SqlByte.Null : p[0]; }
6523
6524 // From Object
6525 //
6526 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlByte</c> value.</summary>
6527 public static SqlByte ToSqlByte(object p)
6528 {
6529 if (p == null) return SqlByte.Null;
6530
6531 if (p is SqlByte) return (SqlByte)p;
6532
6533 var type = p.GetType();
6534
6535 // Primitive types
6536 //
6537 switch (Type.GetTypeCode(type))
6538 {
6539 case TypeCode.DBNull : return SqlByte.Null;
6540 case TypeCode.Byte : return ToSqlByte((Byte) p);
6541 case TypeCode.SByte : return ToSqlByte((SByte) p);
6542 case TypeCode.Int16 : return ToSqlByte((Int16) p);
6543 case TypeCode.Int32 : return ToSqlByte((Int32) p);
6544 case TypeCode.Int64 : return ToSqlByte((Int64) p);
6545 case TypeCode.UInt16 : return ToSqlByte((UInt16) p);
6546 case TypeCode.UInt32 : return ToSqlByte((UInt32) p);
6547 case TypeCode.UInt64 : return ToSqlByte((UInt64) p);
6548 case TypeCode.Single : return ToSqlByte((Single) p);
6549 case TypeCode.Double : return ToSqlByte((Double) p);
6550 case TypeCode.Decimal : return ToSqlByte((Decimal)p);
6551 case TypeCode.Char : return ToSqlByte((Char) p);
6552 case TypeCode.String : return ToSqlByte((String) p);
6553 case TypeCode.Boolean : return ToSqlByte((Boolean)p);
6554 }
6555
6556 // Nullable Types
6557 //
6558 if (type.IsGenericType)
6559 {
6560 if (p is Boolean?) return ToSqlByte((Boolean?) p);
6561 if (p is Byte?) return ToSqlByte((Byte?) p);
6562 if (p is Char?) return ToSqlByte((Char?) p);
6563 if (p is Decimal?) return ToSqlByte((Decimal?) p);
6564 if (p is Double?) return ToSqlByte((Double?) p);
6565 if (p is Int16?) return ToSqlByte((Int16?) p);
6566 if (p is Int32?) return ToSqlByte((Int32?) p);
6567 if (p is Int64?) return ToSqlByte((Int64?) p);
6568 if (p is SByte?) return ToSqlByte((SByte?) p);
6569 if (p is Single?) return ToSqlByte((Single?) p);
6570 if (p is UInt16?) return ToSqlByte((UInt16?) p);
6571 if (p is UInt32?) return ToSqlByte((UInt32?) p);
6572 if (p is UInt64?) return ToSqlByte((UInt64?) p);
6573 }
6574
6575 // Sql Types
6576 //
6577 if (p is INullable)
6578 {
6579 if (p is SqlBoolean) return ToSqlByte((SqlBoolean)p);
6580 if (p is SqlDecimal) return ToSqlByte((SqlDecimal)p);
6581 if (p is SqlDouble) return ToSqlByte((SqlDouble) p);
6582 if (p is SqlInt16) return ToSqlByte((SqlInt16) p);
6583 if (p is SqlInt32) return ToSqlByte((SqlInt32) p);
6584 if (p is SqlInt64) return ToSqlByte((SqlInt64) p);
6585 if (p is SqlMoney) return ToSqlByte((SqlMoney) p);
6586 if (p is SqlSingle) return ToSqlByte((SqlSingle) p);
6587 if (p is SqlString) return ToSqlByte((SqlString) p);
6588 }
6589
6590 // Other Types
6591 //
6592 if (p is Binary) return ToSqlByte((Binary) p);
6593 if (p is Byte[]) return ToSqlByte((Byte[]) p);
6594
6595 throw CreateInvalidCastException(p.GetType(), typeof(SqlByte));
6596 }
6597
6598 #endif
6599
6600 #endregion
6601
6602 #region SqlBytes
6603
6604 #if !SILVERLIGHT
6605
6606 // Simple Types
6607 //
6608 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlBytes</c> value.</summary>
6609 public static SqlBytes ToSqlBytes(Boolean p) { return new SqlBytes(ToByteArray(p)); }
6610 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlBytes</c> value.</summary>
6611 public static SqlBytes ToSqlBytes(Byte p) { return new SqlBytes(ToByteArray(p)); }
6612 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlBytes</c> value.</summary>
6613 public static SqlBytes ToSqlBytes(Char p) { return new SqlBytes(ToByteArray(p)); }
6614 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlBytes</c> value.</summary>
6615 public static SqlBytes ToSqlBytes(DateTime p) { return new SqlBytes(ToByteArray(p)); }
6616 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlBytes</c> value.</summary>
6617 public static SqlBytes ToSqlBytes(DateTimeOffset p) { return new SqlBytes(ToByteArray(p)); }
6618 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlBytes</c> value.</summary>
6619 public static SqlBytes ToSqlBytes(Double p) { return new SqlBytes(ToByteArray(p)); }
6620 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlBytes</c> value.</summary>
6621 public static SqlBytes ToSqlBytes(Guid p) { return p == Guid.Empty ? SqlBytes.Null: new SqlBytes(p.ToByteArray()); }
6622 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlBytes</c> value.</summary>
6623 public static SqlBytes ToSqlBytes(Int16 p) { return new SqlBytes(ToByteArray(p)); }
6624 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlBytes</c> value.</summary>
6625 public static SqlBytes ToSqlBytes(Int32 p) { return new SqlBytes(ToByteArray(p)); }
6626 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlBytes</c> value.</summary>
6627 public static SqlBytes ToSqlBytes(Int64 p) { return new SqlBytes(ToByteArray(p)); }
6628 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlBytes</c> value.</summary>
6629 [CLSCompliant(false)]
6630 public static SqlBytes ToSqlBytes(SByte p) { return new SqlBytes(ToByteArray(p)); }
6631 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlBytes</c> value.</summary>
6632 public static SqlBytes ToSqlBytes(Single p) { return new SqlBytes(ToByteArray(p)); }
6633 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlBytes</c> value.</summary>
6634 public static SqlBytes ToSqlBytes(String p) { return p == null ? SqlBytes.Null : new SqlBytes(ToByteArray(p)); }
6635 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlBytes</c> value.</summary>
6636 public static SqlBytes ToSqlBytes(TimeSpan p) { return new SqlBytes(ToByteArray(p)); }
6637 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlBytes</c> value.</summary>
6638 [CLSCompliant(false)]
6639 public static SqlBytes ToSqlBytes(UInt16 p) { return new SqlBytes(ToByteArray(p)); }
6640 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlBytes</c> value.</summary>
6641 [CLSCompliant(false)]
6642 public static SqlBytes ToSqlBytes(UInt32 p) { return new SqlBytes(ToByteArray(p)); }
6643 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlBytes</c> value.</summary>
6644 [CLSCompliant(false)]
6645 public static SqlBytes ToSqlBytes(UInt64 p) { return new SqlBytes(ToByteArray(p)); }
6646
6647 // Nullable Types
6648 //
6649 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6650 public static SqlBytes ToSqlBytes(Boolean? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6651 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6652 public static SqlBytes ToSqlBytes(Byte? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6653 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6654 public static SqlBytes ToSqlBytes(Char? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6655 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6656 public static SqlBytes ToSqlBytes(DateTime? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6657 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6658 public static SqlBytes ToSqlBytes(DateTimeOffset? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6659 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6660 public static SqlBytes ToSqlBytes(Decimal? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6661 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6662 public static SqlBytes ToSqlBytes(Double? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6663 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6664 public static SqlBytes ToSqlBytes(Guid? p) { return p.HasValue ? new SqlBytes(p.Value.ToByteArray()) : SqlBytes.Null; }
6665 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6666 public static SqlBytes ToSqlBytes(Int16? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6667 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6668 public static SqlBytes ToSqlBytes(Int32? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6669 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6670 public static SqlBytes ToSqlBytes(Int64? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6671 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6672 [CLSCompliant(false)]
6673 public static SqlBytes ToSqlBytes(SByte? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6674 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6675 public static SqlBytes ToSqlBytes(Single? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6676 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6677 public static SqlBytes ToSqlBytes(TimeSpan? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6678 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6679 [CLSCompliant(false)]
6680 public static SqlBytes ToSqlBytes(UInt16? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6681 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6682 [CLSCompliant(false)]
6683 public static SqlBytes ToSqlBytes(UInt32? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6684 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlBytes</c> value.</summary>
6685 [CLSCompliant(false)]
6686 public static SqlBytes ToSqlBytes(UInt64? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
6687
6688 // Sql Types
6689 //
6690 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>SqlBytes</c> value.</summary>
6691 public static SqlBytes ToSqlBytes(SqlBinary p) { return p.IsNull ? SqlBytes.Null : new SqlBytes(p); }
6692 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>SqlBytes</c> value.</summary>
6693 public static SqlBytes ToSqlBytes(SqlGuid p) { return p.IsNull ? SqlBytes.Null : new SqlBytes(p.ToByteArray()); }
6694
6695 // Other Types
6696 //
6697 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlBytes</c> value.</summary>
6698 public static SqlBytes ToSqlBytes(Binary p) { return p == null ? SqlBytes.Null : new SqlBytes(p.ToArray()); }
6699 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlBytes</c> value.</summary>
6700 public static SqlBytes ToSqlBytes(Byte[] p) { return p == null ? SqlBytes.Null : new SqlBytes(p); }
6701 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>SqlBytes</c> value.</summary>
6702 public static SqlBytes ToSqlBytes(Stream p) { return p == null ? SqlBytes.Null : new SqlBytes(p); }
6703
6704 // From Object
6705 //
6706 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlBytes</c> value.</summary>
6707 public static SqlBytes ToSqlBytes(object p)
6708 {
6709 if (p == null) return SqlBytes.Null;
6710
6711 if (p is SqlBytes) return (SqlBytes)p;
6712
6713 var type = p.GetType();
6714
6715 // Primitive types
6716 //
6717 switch (Type.GetTypeCode(type))
6718 {
6719 case TypeCode.DBNull : return SqlBytes.Null;
6720 case TypeCode.String : return ToSqlBytes((String) p);
6721 case TypeCode.Byte : return ToSqlBytes((Byte) p);
6722 case TypeCode.SByte : return ToSqlBytes((SByte) p);
6723 case TypeCode.DateTime : return ToSqlBytes((DateTime)p);
6724 case TypeCode.Int16 : return ToSqlBytes((Int16) p);
6725 case TypeCode.Int32 : return ToSqlBytes((Int32) p);
6726 case TypeCode.Int64 : return ToSqlBytes((Int64) p);
6727 case TypeCode.UInt16 : return ToSqlBytes((UInt16) p);
6728 case TypeCode.UInt32 : return ToSqlBytes((UInt32) p);
6729 case TypeCode.UInt64 : return ToSqlBytes((UInt64) p);
6730 case TypeCode.Single : return ToSqlBytes((Single) p);
6731 case TypeCode.Double : return ToSqlBytes((Double) p);
6732 case TypeCode.Boolean : return ToSqlBytes((Boolean) p);
6733 case TypeCode.Char : return ToSqlBytes((Char) p);
6734 }
6735
6736 // Simple Types
6737 //
6738 if (p is DateTimeOffset) return ToSqlBytes((DateTimeOffset) p);
6739 if (p is Guid) return ToSqlBytes((Guid) p);
6740 if (p is TimeSpan) return ToSqlBytes((TimeSpan) p);
6741
6742 // Nullable Types
6743 //
6744 if (type.IsGenericType)
6745 {
6746 if (p is Boolean?) return ToSqlBytes((Boolean?) p);
6747 if (p is Byte?) return ToSqlBytes((Byte?) p);
6748 if (p is Char?) return ToSqlBytes((Char?) p);
6749 if (p is DateTime?) return ToSqlBytes((DateTime?) p);
6750 if (p is DateTimeOffset?) return ToSqlBytes((DateTimeOffset?)p);
6751 if (p is Decimal?) return ToSqlBytes((Decimal?) p);
6752 if (p is Double?) return ToSqlBytes((Double?) p);
6753 if (p is Guid?) return ToSqlBytes((Guid?) p);
6754 if (p is Int16?) return ToSqlBytes((Int16?) p);
6755 if (p is Int32?) return ToSqlBytes((Int32?) p);
6756 if (p is Int64?) return ToSqlBytes((Int64?) p);
6757 if (p is SByte?) return ToSqlBytes((SByte?) p);
6758 if (p is Single?) return ToSqlBytes((Single?) p);
6759 if (p is TimeSpan?) return ToSqlBytes((TimeSpan?) p);
6760 if (p is UInt16?) return ToSqlBytes((UInt16?) p);
6761 if (p is UInt32?) return ToSqlBytes((UInt32?) p);
6762 if (p is UInt64?) return ToSqlBytes((UInt64?) p);
6763 }
6764
6765 // Sql Types
6766 //
6767 if (p is INullable)
6768 {
6769 if (p is SqlBinary) return ToSqlBytes((SqlBinary) p);
6770 if (p is SqlGuid) return ToSqlBytes((SqlGuid) p);
6771 }
6772
6773 // Other Types
6774 //
6775 if (p is Binary) return ToSqlBytes((Binary) p);
6776 if (p is Byte[]) return ToSqlBytes((Byte[]) p);
6777 if (p is Stream) return ToSqlBytes((Stream) p);
6778
6779 throw CreateInvalidCastException(p.GetType(), typeof(SqlBytes));
6780 }
6781
6782 #endif
6783
6784 #endregion
6785
6786 #region SqlChars
6787
6788 #if !SILVERLIGHT
6789
6790 #endif
6791
6792 #endregion
6793
6794 #region SqlDateTime
6795
6796 #if !SILVERLIGHT
6797
6798 // Simple Types
6799 //
6800 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6801 public static SqlDateTime ToSqlDateTime(DateTime p) { return p; }
6802 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6803 public static SqlDateTime ToSqlDateTime(DateTimeOffset p) { return p.LocalDateTime; }
6804 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6805 public static SqlDateTime ToSqlDateTime(Double p) { return DateTime.MinValue + TimeSpan.FromDays (p); }
6806 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6807 public static SqlDateTime ToSqlDateTime(Int64 p) { return DateTime.MinValue + TimeSpan.FromTicks(p); }
6808 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6809 public static SqlDateTime ToSqlDateTime(String p) { return p == null ? SqlDateTime.Null : DateTime.Parse(p, null, DateTimeStyles.NoCurrentDateDefault); }
6810 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6811 public static SqlDateTime ToSqlDateTime(TimeSpan p) { return DateTime.MinValue + p; }
6812
6813 // Nullable Types
6814 //
6815 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6816 public static SqlDateTime ToSqlDateTime(DateTime? p) { return p.HasValue ? p.Value : SqlDateTime.Null; }
6817 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6818 public static SqlDateTime ToSqlDateTime(DateTimeOffset? p) { return p.HasValue ? p.Value.LocalDateTime : SqlDateTime.Null; }
6819 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6820 public static SqlDateTime ToSqlDateTime(Double? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromDays (p.Value): SqlDateTime.Null; }
6821 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6822 public static SqlDateTime ToSqlDateTime(Int64? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromTicks(p.Value): SqlDateTime.Null; }
6823 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6824 public static SqlDateTime ToSqlDateTime(TimeSpan? p) { return p.HasValue ? DateTime.MinValue + p.Value : SqlDateTime.Null; }
6825
6826 // Sql Types
6827 //
6828 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6829 public static SqlDateTime ToSqlDateTime(SqlDouble p) { return p.IsNull ? SqlDateTime.Null : DateTime.MinValue + TimeSpan.FromDays (p.Value); }
6830 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6831 public static SqlDateTime ToSqlDateTime(SqlInt64 p) { return p.IsNull ? SqlDateTime.Null : DateTime.MinValue + TimeSpan.FromTicks(p.Value); }
6832 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6833 public static SqlDateTime ToSqlDateTime(SqlString p) { return p.IsNull ? SqlDateTime.Null : ToDateTime(p.Value); }
6834
6835 // Other Types
6836 //
6837 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6838 public static SqlDateTime ToSqlDateTime(Binary p) { return p == null || p.Length == 0 ? SqlDateTime.Null : DateTime.FromBinary(ToInt64(p.ToArray())); }
6839 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6840 public static SqlDateTime ToSqlDateTime(Byte[] p) { return p == null || p.Length == 0 ? SqlDateTime.Null : DateTime.FromBinary(ToInt64(p)); }
6841
6842 // From Object
6843 //
6844 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlDateTime</c> value.</summary>
6845 public static SqlDateTime ToSqlDateTime(object p)
6846 {
6847 if (p == null) return SqlDateTime.Null;
6848
6849 if (p is SqlDateTime) return (SqlDateTime)p;
6850
6851 var type = p.GetType();
6852
6853 // Primitive types
6854 //
6855 switch (Type.GetTypeCode(type))
6856 {
6857 case TypeCode.DBNull : return SqlDateTime.Null;
6858 case TypeCode.DateTime : return ToSqlDateTime((DateTime) p);
6859 case TypeCode.String : return ToSqlDateTime((String) p);
6860 case TypeCode.Int64 : return ToSqlDateTime((Int64) p);
6861 case TypeCode.Double : return ToSqlDateTime((Double) p);
6862 }
6863
6864 // Simple Types
6865 //
6866 if (p is DateTimeOffset) return ToSqlDateTime((DateTimeOffset) p);
6867 if (p is TimeSpan) return ToSqlDateTime((TimeSpan) p);
6868
6869 // Nullable Types
6870 //
6871 if (type.IsGenericType)
6872 {
6873 if (p is DateTime?) return ToSqlDateTime((DateTime?) p);
6874 if (p is DateTimeOffset?) return ToSqlDateTime((DateTimeOffset?)p);
6875 if (p is Double?) return ToSqlDateTime((Double?) p);
6876 if (p is Int64?) return ToSqlDateTime((Int64?) p);
6877 if (p is TimeSpan?) return ToSqlDateTime((TimeSpan?) p);
6878 }
6879
6880 // Sql Types
6881 //
6882 if (p is INullable)
6883 {
6884 if (p is SqlDouble) return ToSqlDateTime((SqlDouble) p);
6885 if (p is SqlInt64) return ToSqlDateTime((SqlInt64) p);
6886 if (p is SqlString) return ToSqlDateTime((SqlString) p);
6887 }
6888
6889 // Other Types
6890 //
6891 if (p is Binary) return ToSqlDateTime((Binary) p);
6892 if (p is Byte[]) return ToSqlDateTime((Byte[]) p);
6893
6894 throw CreateInvalidCastException(p.GetType(), typeof(SqlDateTime));
6895 }
6896
6897 #endif
6898
6899 #endregion
6900
6901 #region SqlDecimal
6902
6903 #if !SILVERLIGHT
6904
6905 // Simple Types
6906 //
6907 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6908 public static SqlDecimal ToSqlDecimal(Boolean p) { return p ? (SqlDecimal)1 : (SqlDecimal)0; }
6909 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6910 public static SqlDecimal ToSqlDecimal(Byte p) { return p; }
6911 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6912 public static SqlDecimal ToSqlDecimal(Char p) { return p; }
6913 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6914 public static SqlDecimal ToSqlDecimal(Decimal p) { return p; }
6915 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6916 public static SqlDecimal ToSqlDecimal(Double p) { return checked((Decimal)p); }
6917 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6918 public static SqlDecimal ToSqlDecimal(Int16 p) { return p; }
6919 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6920 public static SqlDecimal ToSqlDecimal(Int32 p) { return p; }
6921 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6922 public static SqlDecimal ToSqlDecimal(Int64 p) { return p; }
6923 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6924 [CLSCompliant(false)]
6925 public static SqlDecimal ToSqlDecimal(SByte p) { return p; }
6926 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6927 public static SqlDecimal ToSqlDecimal(Single p) { return checked((Decimal)p); }
6928 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6929 public static SqlDecimal ToSqlDecimal(String p) { return p == null? SqlDecimal.Null : Decimal.Parse(p); }
6930 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6931 [CLSCompliant(false)]
6932 public static SqlDecimal ToSqlDecimal(UInt16 p) { return p; }
6933 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6934 [CLSCompliant(false)]
6935 public static SqlDecimal ToSqlDecimal(UInt32 p) { return p; }
6936 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6937 [CLSCompliant(false)]
6938 public static SqlDecimal ToSqlDecimal(UInt64 p) { return p; }
6939
6940 // Nullable Types
6941 //
6942 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6943 public static SqlDecimal ToSqlDecimal(Boolean? p) { return p.HasValue && p.Value ? (SqlDecimal)1: (SqlDecimal)0; }
6944 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6945 public static SqlDecimal ToSqlDecimal(Byte? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6946 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6947 public static SqlDecimal ToSqlDecimal(Char? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6948 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6949 public static SqlDecimal ToSqlDecimal(Decimal? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6950 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6951 public static SqlDecimal ToSqlDecimal(Double? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlDecimal.Null; }
6952 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6953 public static SqlDecimal ToSqlDecimal(Int16? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6954 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6955 public static SqlDecimal ToSqlDecimal(Int32? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6956 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6957 public static SqlDecimal ToSqlDecimal(Int64? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6958 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6959 [CLSCompliant(false)]
6960 public static SqlDecimal ToSqlDecimal(SByte? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6961 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6962 public static SqlDecimal ToSqlDecimal(Single? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlDecimal.Null; }
6963 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6964 [CLSCompliant(false)]
6965 public static SqlDecimal ToSqlDecimal(UInt16? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6966 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6967 [CLSCompliant(false)]
6968 public static SqlDecimal ToSqlDecimal(UInt32? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6969 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6970 [CLSCompliant(false)]
6971 public static SqlDecimal ToSqlDecimal(UInt64? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
6972
6973 // Sql Types
6974 //
6975 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6976 public static SqlDecimal ToSqlDecimal(SqlBoolean p) { return p.ToSqlDecimal(); }
6977 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6978 public static SqlDecimal ToSqlDecimal(SqlByte p) { return p.ToSqlDecimal(); }
6979 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6980 public static SqlDecimal ToSqlDecimal(SqlDouble p) { return p.ToSqlDecimal(); }
6981 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6982 public static SqlDecimal ToSqlDecimal(SqlInt16 p) { return p.ToSqlDecimal(); }
6983 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6984 public static SqlDecimal ToSqlDecimal(SqlInt32 p) { return p.ToSqlDecimal(); }
6985 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6986 public static SqlDecimal ToSqlDecimal(SqlInt64 p) { return p.ToSqlDecimal(); }
6987 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6988 public static SqlDecimal ToSqlDecimal(SqlMoney p) { return p.ToSqlDecimal(); }
6989 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6990 public static SqlDecimal ToSqlDecimal(SqlSingle p) { return p.ToSqlDecimal(); }
6991 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6992 public static SqlDecimal ToSqlDecimal(SqlString p) { return p.ToSqlDecimal(); }
6993
6994 // Other Types
6995 //
6996 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6997 public static SqlDecimal ToSqlDecimal(Binary p) { return p == null || p.Length == 0 ? SqlDecimal.Null : ToDecimal(p); }
6998 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlDecimal</c> value.</summary>
6999 public static SqlDecimal ToSqlDecimal(Byte[] p) { return p == null || p.Length == 0 ? SqlDecimal.Null : ToDecimal(p); }
7000
7001 // From Object
7002 //
7003 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlDecimal</c> value.</summary>
7004 public static SqlDecimal ToSqlDecimal(object p)
7005 {
7006 if (p == null) return SqlDecimal.Null;
7007
7008 if (p is SqlDecimal) return (SqlDecimal)p;
7009
7010 var type = p.GetType();
7011
7012 // Primitive types
7013 //
7014 switch (Type.GetTypeCode(type))
7015 {
7016 case TypeCode.DBNull : return SqlDecimal.Null;
7017 case TypeCode.SByte : return ToSqlDecimal((SByte) p);
7018 case TypeCode.Int16 : return ToSqlDecimal((Int16) p);
7019 case TypeCode.Int32 : return ToSqlDecimal((Int32) p);
7020 case TypeCode.Int64 : return ToSqlDecimal((Int64) p);
7021 case TypeCode.Byte : return ToSqlDecimal((Byte) p);
7022 case TypeCode.UInt16 : return ToSqlDecimal((UInt16) p);
7023 case TypeCode.UInt32 : return ToSqlDecimal((UInt32) p);
7024 case TypeCode.Char : return ToSqlDecimal((Char) p);
7025 case TypeCode.UInt64 : return ToSqlDecimal((UInt64) p);
7026 case TypeCode.Decimal : return ToSqlDecimal((Decimal) p);
7027 case TypeCode.Single : return ToSqlDecimal((Single) p);
7028 case TypeCode.Double : return ToSqlDecimal((Double) p);
7029 case TypeCode.String : return ToSqlDecimal((String) p);
7030 case TypeCode.Boolean : return ToSqlDecimal((Boolean) p);
7031 }
7032
7033 // Nullable Types
7034 //
7035 if (type.IsGenericType)
7036 {
7037 if (p is Boolean?) return ToSqlDecimal((Boolean?) p);
7038 if (p is Byte?) return ToSqlDecimal((Byte?) p);
7039 if (p is Char?) return ToSqlDecimal((Char?) p);
7040 if (p is Decimal?) return ToSqlDecimal((Decimal?) p);
7041 if (p is Double?) return ToSqlDecimal((Double?) p);
7042 if (p is Int16?) return ToSqlDecimal((Int16?) p);
7043 if (p is Int32?) return ToSqlDecimal((Int32?) p);
7044 if (p is Int64?) return ToSqlDecimal((Int64?) p);
7045 if (p is SByte?) return ToSqlDecimal((SByte?) p);
7046 if (p is Single?) return ToSqlDecimal((Single?) p);
7047 if (p is UInt16?) return ToSqlDecimal((UInt16?) p);
7048 if (p is UInt32?) return ToSqlDecimal((UInt32?) p);
7049 if (p is UInt64?) return ToSqlDecimal((UInt64?) p);
7050 }
7051
7052 // Sql Types
7053 //
7054 if (p is INullable)
7055 {
7056 if (p is SqlBoolean) return ToSqlDecimal((SqlBoolean)p);
7057 if (p is SqlByte) return ToSqlDecimal((SqlByte) p);
7058 if (p is SqlDouble) return ToSqlDecimal((SqlDouble) p);
7059 if (p is SqlInt16) return ToSqlDecimal((SqlInt16) p);
7060 if (p is SqlInt32) return ToSqlDecimal((SqlInt32) p);
7061 if (p is SqlInt64) return ToSqlDecimal((SqlInt64) p);
7062 if (p is SqlMoney) return ToSqlDecimal((SqlMoney) p);
7063 if (p is SqlSingle) return ToSqlDecimal((SqlSingle) p);
7064 if (p is SqlString) return ToSqlDecimal((SqlString) p);
7065 }
7066
7067 // Other Types
7068 //
7069 if (p is Binary) return ToSqlDecimal((Binary) p);
7070 if (p is Byte[]) return ToSqlDecimal((Byte[]) p);
7071
7072 throw CreateInvalidCastException(p.GetType(), typeof(SqlDecimal));
7073 }
7074
7075 #endif
7076
7077 #endregion
7078
7079 #region SqlDouble
7080
7081 #if !SILVERLIGHT
7082
7083 // Simple Types
7084 //
7085 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlDouble</c> value.</summary>
7086 public static SqlDouble ToSqlDouble(Boolean p) { return p ? (SqlDouble)1 : (SqlDouble)0; }
7087 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlDouble</c> value.</summary>
7088 public static SqlDouble ToSqlDouble(Byte p) { return p; }
7089 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlDouble</c> value.</summary>
7090 public static SqlDouble ToSqlDouble(Char p) { return p; }
7091 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlDouble</c> value.</summary>
7092 public static SqlDouble ToSqlDouble(DateTime p) { return (p - DateTime.MinValue).TotalDays; }
7093 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlDouble</c> value.</summary>
7094 public static SqlDouble ToSqlDouble(DateTimeOffset p) { return (p - DateTimeOffset.MinValue).TotalDays; }
7095 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlDouble</c> value.</summary>
7096 public static SqlDouble ToSqlDouble(Decimal p) { return checked((Double)p); }
7097 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlDouble</c> value.</summary>
7098 public static SqlDouble ToSqlDouble(Double p) { return p; }
7099 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlDouble</c> value.</summary>
7100 public static SqlDouble ToSqlDouble(Int16 p) { return p; }
7101 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlDouble</c> value.</summary>
7102 public static SqlDouble ToSqlDouble(Int32 p) { return p; }
7103 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlDouble</c> value.</summary>
7104 public static SqlDouble ToSqlDouble(Int64 p) { return p; }
7105 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlDouble</c> value.</summary>
7106 [CLSCompliant(false)]
7107 public static SqlDouble ToSqlDouble(SByte p) { return p; }
7108 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlDouble</c> value.</summary>
7109 public static SqlDouble ToSqlDouble(Single p) { return p; }
7110 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlDouble</c> value.</summary>
7111 public static SqlDouble ToSqlDouble(String p) { return p == null? SqlDouble.Null : Double.Parse(p); }
7112 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlDouble</c> value.</summary>
7113 public static SqlDouble ToSqlDouble(TimeSpan p) { return p.TotalDays; }
7114 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlDouble</c> value.</summary>
7115 [CLSCompliant(false)]
7116 public static SqlDouble ToSqlDouble(UInt16 p) { return p; }
7117 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlDouble</c> value.</summary>
7118 [CLSCompliant(false)]
7119 public static SqlDouble ToSqlDouble(UInt32 p) { return p; }
7120 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlDouble</c> value.</summary>
7121 [CLSCompliant(false)]
7122 public static SqlDouble ToSqlDouble(UInt64 p) { return p; }
7123
7124 // Nullable Types
7125 //
7126 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7127 public static SqlDouble ToSqlDouble(Boolean? p) { return p.HasValue && p.Value ? (SqlDouble)1: (SqlDouble)0; }
7128 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7129 public static SqlDouble ToSqlDouble(Byte? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7130 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7131 public static SqlDouble ToSqlDouble(Char? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7132 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7133 public static SqlDouble ToSqlDouble(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).TotalDays : SqlDouble.Null; }
7134 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7135 public static SqlDouble ToSqlDouble(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTimeOffset.MinValue).TotalDays : SqlDouble.Null; }
7136 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7137 public static SqlDouble ToSqlDouble(Decimal? p) { return p.HasValue ? checked((Double)p.Value) : SqlDouble.Null; }
7138 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7139 public static SqlDouble ToSqlDouble(Double? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7140 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7141 public static SqlDouble ToSqlDouble(Int16? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7142 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7143 public static SqlDouble ToSqlDouble(Int32? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7144 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7145 public static SqlDouble ToSqlDouble(Int64? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7146 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7147 [CLSCompliant(false)]
7148 public static SqlDouble ToSqlDouble(SByte? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7149 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7150 public static SqlDouble ToSqlDouble(Single? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7151 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7152 public static SqlDouble ToSqlDouble(TimeSpan? p) { return p.HasValue ? p.Value.TotalDays : SqlDouble.Null; }
7153 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7154 [CLSCompliant(false)]
7155 public static SqlDouble ToSqlDouble(UInt16? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7156 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7157 [CLSCompliant(false)]
7158 public static SqlDouble ToSqlDouble(UInt32? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7159 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlDouble</c> value.</summary>
7160 [CLSCompliant(false)]
7161 public static SqlDouble ToSqlDouble(UInt64? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
7162
7163 // Sql Types
7164 //
7165 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlDouble</c> value.</summary>
7166 public static SqlDouble ToSqlDouble(SqlBoolean p) { return p.ToSqlDouble(); }
7167 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlDouble</c> value.</summary>
7168 public static SqlDouble ToSqlDouble(SqlByte p) { return p.ToSqlDouble(); }
7169 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>SqlDouble</c> value.</summary>
7170 public static SqlDouble ToSqlDouble(SqlDateTime p) { return p.IsNull? SqlDouble.Null: ToDouble(p.Value); }
7171 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlDouble</c> value.</summary>
7172 public static SqlDouble ToSqlDouble(SqlDecimal p) { return p.ToSqlDouble(); }
7173 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlDouble</c> value.</summary>
7174 public static SqlDouble ToSqlDouble(SqlInt16 p) { return p.ToSqlDouble(); }
7175 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlDouble</c> value.</summary>
7176 public static SqlDouble ToSqlDouble(SqlInt32 p) { return p.ToSqlDouble(); }
7177 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlDouble</c> value.</summary>
7178 public static SqlDouble ToSqlDouble(SqlInt64 p) { return p.ToSqlDouble(); }
7179 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlDouble</c> value.</summary>
7180 public static SqlDouble ToSqlDouble(SqlMoney p) { return p.ToSqlDouble(); }
7181 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlDouble</c> value.</summary>
7182 public static SqlDouble ToSqlDouble(SqlSingle p) { return p.ToSqlDouble(); }
7183 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlDouble</c> value.</summary>
7184 public static SqlDouble ToSqlDouble(SqlString p) { return p.ToSqlDouble(); }
7185
7186 // Other Types
7187 //
7188 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlDouble</c> value.</summary>
7189 public static SqlDouble ToSqlDouble(Binary p) { return p == null || p.Length == 0 ? SqlDouble.Null : BitConverter.ToDouble(p.ToArray(), 0); }
7190 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlDouble</c> value.</summary>
7191 public static SqlDouble ToSqlDouble(Byte[] p) { return p == null || p.Length == 0 ? SqlDouble.Null : BitConverter.ToDouble(p, 0); }
7192
7193 // From Object
7194 //
7195 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlDouble</c> value.</summary>
7196 public static SqlDouble ToSqlDouble(object p)
7197 {
7198 if (p == null) return SqlDouble.Null;
7199
7200 if (p is SqlDouble) return (SqlDouble)p;
7201
7202 var type = p.GetType();
7203
7204 // Primitive types
7205 //
7206 switch (Type.GetTypeCode(type))
7207 {
7208 case TypeCode.DBNull : return SqlDouble.Null;
7209 case TypeCode.DateTime : return ToSqlDouble((DateTime) p);
7210 case TypeCode.SByte : return ToSqlDouble((SByte) p);
7211 case TypeCode.Int16 : return ToSqlDouble((Int16) p);
7212 case TypeCode.Int32 : return ToSqlDouble((Int32) p);
7213 case TypeCode.Int64 : return ToSqlDouble((Int64) p);
7214 case TypeCode.Byte : return ToSqlDouble((Byte) p);
7215 case TypeCode.UInt16 : return ToSqlDouble((UInt16) p);
7216 case TypeCode.UInt32 : return ToSqlDouble((UInt32) p);
7217 case TypeCode.Char : return ToSqlDouble((Char) p);
7218 case TypeCode.UInt64 : return ToSqlDouble((UInt64) p);
7219 case TypeCode.Single : return ToSqlDouble((Single) p);
7220 case TypeCode.Double : return ToSqlDouble((Double) p);
7221 case TypeCode.Decimal : return ToSqlDouble((Decimal) p);
7222 case TypeCode.String : return ToSqlDouble((String) p);
7223 case TypeCode.Boolean : return ToSqlDouble((Boolean) p);
7224 }
7225
7226 // Simple Types
7227 //
7228 if (p is DateTimeOffset) return ToSqlDouble((DateTimeOffset) p);
7229 if (p is TimeSpan) return ToSqlDouble((TimeSpan) p);
7230
7231 // Nullable Types
7232 //
7233 if (type.IsGenericType)
7234 {
7235 if (p is Boolean?) return ToSqlDouble((Boolean?) p);
7236 if (p is Byte?) return ToSqlDouble((Byte?) p);
7237 if (p is Char?) return ToSqlDouble((Char?) p);
7238 if (p is DateTime?) return ToSqlDouble((DateTime?) p);
7239 if (p is DateTimeOffset?) return ToSqlDouble((DateTimeOffset?)p);
7240 if (p is Decimal?) return ToSqlDouble((Decimal?) p);
7241 if (p is Double?) return ToSqlDouble((Double?) p);
7242 if (p is Int16?) return ToSqlDouble((Int16?) p);
7243 if (p is Int32?) return ToSqlDouble((Int32?) p);
7244 if (p is Int64?) return ToSqlDouble((Int64?) p);
7245 if (p is SByte?) return ToSqlDouble((SByte?) p);
7246 if (p is Single?) return ToSqlDouble((Single?) p);
7247 if (p is TimeSpan?) return ToSqlDouble((TimeSpan?) p);
7248 if (p is UInt16?) return ToSqlDouble((UInt16?) p);
7249 if (p is UInt32?) return ToSqlDouble((UInt32?) p);
7250 if (p is UInt64?) return ToSqlDouble((UInt64?) p);
7251 }
7252
7253 // Sql Types
7254 //
7255 if (p is INullable)
7256 {
7257 if (p is SqlBoolean) return ToSqlDouble((SqlBoolean) p);
7258 if (p is SqlByte) return ToSqlDouble((SqlByte) p);
7259 if (p is SqlDateTime) return ToSqlDouble((SqlDateTime) p);
7260 if (p is SqlDecimal) return ToSqlDouble((SqlDecimal) p);
7261 if (p is SqlInt16) return ToSqlDouble((SqlInt16) p);
7262 if (p is SqlInt32) return ToSqlDouble((SqlInt32) p);
7263 if (p is SqlInt64) return ToSqlDouble((SqlInt64) p);
7264 if (p is SqlMoney) return ToSqlDouble((SqlMoney) p);
7265 if (p is SqlSingle) return ToSqlDouble((SqlSingle) p);
7266 if (p is SqlString) return ToSqlDouble((SqlString) p);
7267 }
7268
7269 // Other Types
7270 //
7271 if (p is Binary) return ToSqlDouble((Binary) p);
7272 if (p is Byte[]) return ToSqlDouble((Byte[]) p);
7273
7274 throw CreateInvalidCastException(p.GetType(), typeof(SqlDouble));
7275 }
7276
7277 #endif
7278
7279 #endregion
7280
7281 #region SqlGuid
7282
7283 #if !SILVERLIGHT
7284
7285 // Simple Types
7286 //
7287 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlGuid</c> value.</summary>
7288 public static SqlGuid ToSqlGuid(Guid p) { return p; }
7289 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlGuid</c> value.</summary>
7290 public static SqlGuid ToSqlGuid(String p) { return p == null ? SqlGuid.Null : new Guid(p); }
7291
7292 // Nullable Types
7293 //
7294 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlGuid</c> value.</summary>
7295 public static SqlGuid ToSqlGuid(Guid? p) { return p.HasValue ? p.Value : SqlGuid.Null; }
7296
7297 // Sql Types
7298 //
7299 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>SqlGuid</c> value.</summary>
7300 public static SqlGuid ToSqlGuid(SqlBinary p) { return p.IsNull ? SqlGuid.Null : p.ToSqlGuid().Value; }
7301 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlGuid</c> value.</summary>
7302 public static SqlGuid ToSqlGuid(SqlString p) { return p.IsNull ? SqlGuid.Null : new Guid(p.Value); }
7303
7304 // Other Types
7305 //
7306 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlGuid</c> value.</summary>
7307 public static SqlGuid ToSqlGuid(Binary p) { return p == null ? SqlGuid.Null : new Guid(p.ToArray()); }
7308 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlGuid</c> value.</summary>
7309 public static SqlGuid ToSqlGuid(Byte[] p) { return p == null ? SqlGuid.Null : new Guid(p); }
7310 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>SqlGuid</c> value.</summary>
7311 public static SqlGuid ToSqlGuid(Type p) { return p == null ? SqlGuid.Null : p.GUID; }
7312
7313 // From Object
7314 //
7315 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlGuid</c> value.</summary>
7316 public static SqlGuid ToSqlGuid(object p)
7317 {
7318 if (p == null) return SqlGuid.Null;
7319
7320 if (p is SqlGuid) return (SqlGuid)p;
7321
7322 var type = p.GetType();
7323
7324 // Primitive types
7325 //
7326 switch (Type.GetTypeCode(type))
7327 {
7328 case TypeCode.DBNull : return SqlGuid.Null;
7329 case TypeCode.String : return ToSqlGuid((String) p);
7330 }
7331
7332 // Simple Types
7333 //
7334 if (p is Guid) return ToSqlGuid((Guid) p);
7335
7336 // Nullable Types
7337 //
7338 if (type.IsGenericType)
7339 {
7340 if (p is Guid?) return ToSqlGuid((Guid?) p);
7341 }
7342
7343 // Sql Types
7344 //
7345 if (p is INullable)
7346 {
7347 if (p is SqlBinary) return ToSqlGuid((SqlBinary)p);
7348 if (p is SqlString) return ToSqlGuid((SqlString)p);
7349 }
7350
7351 // Other Types
7352 //
7353 if (p is Binary) return ToSqlGuid((Binary) p);
7354 if (p is Byte[]) return ToSqlGuid((Byte[]) p);
7355 if (p is Type) return ToSqlGuid((Type) p);
7356
7357 throw CreateInvalidCastException(p.GetType(), typeof(SqlGuid));
7358 }
7359
7360 #endif
7361
7362 #endregion
7363
7364 #region SqlInt16
7365
7366 #if !SILVERLIGHT
7367
7368 // Simple Types
7369 //
7370 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlInt16</c> value.</summary>
7371 public static SqlInt16 ToSqlInt16(Boolean p) { return p ? (SqlInt16)1 : (SqlInt16)0; }
7372 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlInt16</c> value.</summary>
7373 public static SqlInt16 ToSqlInt16(Byte p) { return p; }
7374 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlInt16</c> value.</summary>
7375 public static SqlInt16 ToSqlInt16(Char p) { return checked((Int16)p); }
7376 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlInt16</c> value.</summary>
7377 public static SqlInt16 ToSqlInt16(Decimal p) { return checked((Int16)p); }
7378 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlInt16</c> value.</summary>
7379 public static SqlInt16 ToSqlInt16(Double p) { return checked((Int16)p); }
7380 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlInt16</c> value.</summary>
7381 public static SqlInt16 ToSqlInt16(Int16 p) { return p; }
7382 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlInt16</c> value.</summary>
7383 public static SqlInt16 ToSqlInt16(Int32 p) { return checked((Int16)p); }
7384 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlInt16</c> value.</summary>
7385 public static SqlInt16 ToSqlInt16(Int64 p) { return checked((Int16)p); }
7386 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlInt16</c> value.</summary>
7387 [CLSCompliant(false)]
7388 public static SqlInt16 ToSqlInt16(SByte p) { return p; }
7389 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlInt16</c> value.</summary>
7390 public static SqlInt16 ToSqlInt16(Single p) { return checked((Int16)p); }
7391 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlInt16</c> value.</summary>
7392 public static SqlInt16 ToSqlInt16(String p) { return p == null? SqlInt16.Null : Int16.Parse(p); }
7393 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlInt16</c> value.</summary>
7394 [CLSCompliant(false)]
7395 public static SqlInt16 ToSqlInt16(UInt16 p) { return checked((Int16)p); }
7396 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlInt16</c> value.</summary>
7397 [CLSCompliant(false)]
7398 public static SqlInt16 ToSqlInt16(UInt32 p) { return checked((Int16)p); }
7399 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlInt16</c> value.</summary>
7400 [CLSCompliant(false)]
7401 public static SqlInt16 ToSqlInt16(UInt64 p) { return checked((Int16)p); }
7402
7403 // Nullable Types
7404 //
7405 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7406 public static SqlInt16 ToSqlInt16(Boolean? p) { return p.HasValue && p.Value ? (SqlInt16)1: (SqlInt16)0; }
7407 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7408 public static SqlInt16 ToSqlInt16(Byte? p) { return p.HasValue ? p.Value : SqlInt16.Null; }
7409 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7410 public static SqlInt16 ToSqlInt16(Char? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7411 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7412 public static SqlInt16 ToSqlInt16(Decimal? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7413 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7414 public static SqlInt16 ToSqlInt16(Double? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7415 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7416 public static SqlInt16 ToSqlInt16(Int16? p) { return p.HasValue ? p.Value : SqlInt16.Null; }
7417 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7418 public static SqlInt16 ToSqlInt16(Int32? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7419 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7420 public static SqlInt16 ToSqlInt16(Int64? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7421 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7422 [CLSCompliant(false)]
7423 public static SqlInt16 ToSqlInt16(SByte? p) { return p.HasValue ? p.Value : SqlInt16.Null; }
7424 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7425 public static SqlInt16 ToSqlInt16(Single? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7426 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7427 [CLSCompliant(false)]
7428 public static SqlInt16 ToSqlInt16(UInt16? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7429 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7430 [CLSCompliant(false)]
7431 public static SqlInt16 ToSqlInt16(UInt32? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7432 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlInt16</c> value.</summary>
7433 [CLSCompliant(false)]
7434 public static SqlInt16 ToSqlInt16(UInt64? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
7435
7436 // Sql Types
7437 //
7438 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlInt16</c> value.</summary>
7439 public static SqlInt16 ToSqlInt16(SqlBoolean p) { return p.ToSqlInt16(); }
7440 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlInt16</c> value.</summary>
7441 public static SqlInt16 ToSqlInt16(SqlByte p) { return p.ToSqlInt16(); }
7442 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlInt16</c> value.</summary>
7443 public static SqlInt16 ToSqlInt16(SqlDecimal p) { return p.ToSqlInt16(); }
7444 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlInt16</c> value.</summary>
7445 public static SqlInt16 ToSqlInt16(SqlDouble p) { return p.ToSqlInt16(); }
7446 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlInt16</c> value.</summary>
7447 public static SqlInt16 ToSqlInt16(SqlInt32 p) { return p.ToSqlInt16(); }
7448 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlInt16</c> value.</summary>
7449 public static SqlInt16 ToSqlInt16(SqlInt64 p) { return p.ToSqlInt16(); }
7450 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlInt16</c> value.</summary>
7451 public static SqlInt16 ToSqlInt16(SqlMoney p) { return p.ToSqlInt16(); }
7452 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlInt16</c> value.</summary>
7453 public static SqlInt16 ToSqlInt16(SqlSingle p) { return p.ToSqlInt16(); }
7454 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlInt16</c> value.</summary>
7455 public static SqlInt16 ToSqlInt16(SqlString p) { return p.ToSqlInt16(); }
7456
7457 // Other Types
7458 //
7459 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlInt16</c> value.</summary>
7460 public static SqlInt16 ToSqlInt16(Binary p) { return p == null || p.Length == 0 ? SqlInt16.Null : BitConverter.ToInt16(p.ToArray(), 0); }
7461 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlInt16</c> value.</summary>
7462 public static SqlInt16 ToSqlInt16(Byte[] p) { return p == null || p.Length == 0 ? SqlInt16.Null : BitConverter.ToInt16(p, 0); }
7463
7464 // From Object
7465 //
7466 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlInt16</c> value.</summary>
7467 public static SqlInt16 ToSqlInt16(object p)
7468 {
7469 if (p == null) return SqlInt16.Null;
7470
7471 if (p is SqlInt16) return (SqlInt16)p;
7472
7473 var type = p.GetType();
7474
7475 // Primitive types
7476 //
7477 switch (Type.GetTypeCode(type))
7478 {
7479 case TypeCode.DBNull : return SqlInt16.Null;
7480 case TypeCode.SByte : return ToSqlInt16((SByte) p);
7481 case TypeCode.Int16 : return ToSqlInt16((Int16) p);
7482 case TypeCode.Byte : return ToSqlInt16((Byte) p);
7483 case TypeCode.Int32 : return ToSqlInt16((Int32) p);
7484 case TypeCode.Int64 : return ToSqlInt16((Int64) p);
7485 case TypeCode.UInt16 : return ToSqlInt16((UInt16) p);
7486 case TypeCode.UInt32 : return ToSqlInt16((UInt32) p);
7487 case TypeCode.UInt64 : return ToSqlInt16((UInt64) p);
7488 case TypeCode.Single : return ToSqlInt16((Single) p);
7489 case TypeCode.Double : return ToSqlInt16((Double) p);
7490 case TypeCode.Decimal : return ToSqlInt16((Decimal) p);
7491 case TypeCode.Char : return ToSqlInt16((Char) p);
7492 case TypeCode.String : return ToSqlInt16((String) p);
7493 case TypeCode.Boolean : return ToSqlInt16((Boolean) p);
7494 }
7495
7496 // Nullable Types
7497 //
7498 if (type.IsGenericType)
7499 {
7500 if (p is Boolean?) return ToSqlInt16((Boolean?) p);
7501 if (p is Byte?) return ToSqlInt16((Byte?) p);
7502 if (p is Char?) return ToSqlInt16((Char?) p);
7503 if (p is Decimal?) return ToSqlInt16((Decimal?) p);
7504 if (p is Double?) return ToSqlInt16((Double?) p);
7505 if (p is Int16?) return ToSqlInt16((Int16?) p);
7506 if (p is Int32?) return ToSqlInt16((Int32?) p);
7507 if (p is Int64?) return ToSqlInt16((Int64?) p);
7508 if (p is SByte?) return ToSqlInt16((SByte?) p);
7509 if (p is Single?) return ToSqlInt16((Single?) p);
7510 if (p is UInt16?) return ToSqlInt16((UInt16?) p);
7511 if (p is UInt32?) return ToSqlInt16((UInt32?) p);
7512 if (p is UInt64?) return ToSqlInt16((UInt64?) p);
7513 }
7514
7515 // Sql Types
7516 //
7517 if (p is INullable)
7518 {
7519 if (p is SqlBoolean) return ToSqlInt16((SqlBoolean)p);
7520 if (p is SqlByte) return ToSqlInt16((SqlByte) p);
7521 if (p is SqlDecimal) return ToSqlInt16((SqlDecimal)p);
7522 if (p is SqlDouble) return ToSqlInt16((SqlDouble) p);
7523 if (p is SqlInt32) return ToSqlInt16((SqlInt32) p);
7524 if (p is SqlInt64) return ToSqlInt16((SqlInt64) p);
7525 if (p is SqlMoney) return ToSqlInt16((SqlMoney) p);
7526 if (p is SqlSingle) return ToSqlInt16((SqlSingle) p);
7527 if (p is SqlString) return ToSqlInt16((SqlString) p);
7528 }
7529
7530 // Other Types
7531 //
7532 if (p is Binary) return ToSqlInt16((Binary) p);
7533 if (p is Byte[]) return ToSqlInt16((Byte[]) p);
7534
7535 throw CreateInvalidCastException(p.GetType(), typeof(SqlInt16));
7536 }
7537
7538 #endif
7539
7540 #endregion
7541
7542 #region SqlInt32
7543
7544 #if !SILVERLIGHT
7545
7546 // Simple Types
7547 //
7548 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlInt32</c> value.</summary>
7549 public static SqlInt32 ToSqlInt32(Boolean p) { return p ? (SqlInt32)1 : (SqlInt32)0; }
7550 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlInt32</c> value.</summary>
7551 public static SqlInt32 ToSqlInt32(Byte p) { return p; }
7552 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlInt32</c> value.</summary>
7553 public static SqlInt32 ToSqlInt32(Char p) { return p; }
7554 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlInt32</c> value.</summary>
7555 public static SqlInt32 ToSqlInt32(Decimal p) { return checked((Int32)p); }
7556 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlInt32</c> value.</summary>
7557 public static SqlInt32 ToSqlInt32(Double p) { return checked((Int32)p); }
7558 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlInt32</c> value.</summary>
7559 public static SqlInt32 ToSqlInt32(Int16 p) { return p; }
7560 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlInt32</c> value.</summary>
7561 public static SqlInt32 ToSqlInt32(Int32 p) { return p; }
7562 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlInt32</c> value.</summary>
7563 public static SqlInt32 ToSqlInt32(Int64 p) { return checked((Int32)p); }
7564 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlInt32</c> value.</summary>
7565 [CLSCompliant(false)]
7566 public static SqlInt32 ToSqlInt32(SByte p) { return p; }
7567 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlInt32</c> value.</summary>
7568 public static SqlInt32 ToSqlInt32(Single p) { return checked((Int32)p); }
7569 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlInt32</c> value.</summary>
7570 public static SqlInt32 ToSqlInt32(String p) { return p == null? SqlInt32.Null : Int32.Parse(p); }
7571 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlInt32</c> value.</summary>
7572 [CLSCompliant(false)]
7573 public static SqlInt32 ToSqlInt32(UInt16 p) { return p; }
7574 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlInt32</c> value.</summary>
7575 [CLSCompliant(false)]
7576 public static SqlInt32 ToSqlInt32(UInt32 p) { return checked((Int32)p); }
7577 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlInt32</c> value.</summary>
7578 [CLSCompliant(false)]
7579 public static SqlInt32 ToSqlInt32(UInt64 p) { return checked((Int32)p); }
7580
7581 // Nullable Types
7582 //
7583 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7584 public static SqlInt32 ToSqlInt32(Boolean? p) { return p.HasValue && p.Value ? (SqlInt32)1: (SqlInt32)0; }
7585 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7586 public static SqlInt32 ToSqlInt32(Byte? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
7587 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7588 public static SqlInt32 ToSqlInt32(Char? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
7589 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7590 public static SqlInt32 ToSqlInt32(Decimal? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
7591 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7592 public static SqlInt32 ToSqlInt32(Double? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
7593 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7594 public static SqlInt32 ToSqlInt32(Int16? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
7595 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7596 public static SqlInt32 ToSqlInt32(Int32? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
7597 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7598 public static SqlInt32 ToSqlInt32(Int64? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
7599 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7600 [CLSCompliant(false)]
7601 public static SqlInt32 ToSqlInt32(SByte? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
7602 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7603 public static SqlInt32 ToSqlInt32(Single? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
7604 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7605 [CLSCompliant(false)]
7606 public static SqlInt32 ToSqlInt32(UInt16? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
7607 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7608 [CLSCompliant(false)]
7609 public static SqlInt32 ToSqlInt32(UInt32? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
7610 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlInt32</c> value.</summary>
7611 [CLSCompliant(false)]
7612 public static SqlInt32 ToSqlInt32(UInt64? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
7613
7614 // Sql Types
7615 //
7616 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlInt32</c> value.</summary>
7617 public static SqlInt32 ToSqlInt32(SqlBoolean p) { return p.ToSqlInt32(); }
7618 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlInt32</c> value.</summary>
7619 public static SqlInt32 ToSqlInt32(SqlByte p) { return p.ToSqlInt32(); }
7620 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlInt32</c> value.</summary>
7621 public static SqlInt32 ToSqlInt32(SqlDecimal p) { return p.ToSqlInt32(); }
7622 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlInt32</c> value.</summary>
7623 public static SqlInt32 ToSqlInt32(SqlDouble p) { return p.ToSqlInt32(); }
7624 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlInt32</c> value.</summary>
7625 public static SqlInt32 ToSqlInt32(SqlInt16 p) { return p.ToSqlInt32(); }
7626 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlInt32</c> value.</summary>
7627 public static SqlInt32 ToSqlInt32(SqlInt64 p) { return p.ToSqlInt32(); }
7628 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlInt32</c> value.</summary>
7629 public static SqlInt32 ToSqlInt32(SqlMoney p) { return p.ToSqlInt32(); }
7630 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlInt32</c> value.</summary>
7631 public static SqlInt32 ToSqlInt32(SqlSingle p) { return p.ToSqlInt32(); }
7632 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlInt32</c> value.</summary>
7633 public static SqlInt32 ToSqlInt32(SqlString p) { return p.ToSqlInt32(); }
7634
7635 // Other Types
7636 //
7637 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlInt32</c> value.</summary>
7638 public static SqlInt32 ToSqlInt32(Binary p) { return p == null || p.Length == 0 ? SqlInt32.Null : BitConverter.ToInt32(p.ToArray(), 0); }
7639 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlInt32</c> value.</summary>
7640 public static SqlInt32 ToSqlInt32(Byte[] p) { return p == null || p.Length == 0 ? SqlInt32.Null : BitConverter.ToInt32(p, 0); }
7641
7642 // From Object
7643 //
7644 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlInt32</c> value.</summary>
7645 public static SqlInt32 ToSqlInt32(object p)
7646 {
7647 if (p == null) return SqlInt32.Null;
7648
7649 if (p is SqlInt32) return (SqlInt32)p;
7650
7651 var type = p.GetType();
7652
7653 // Primitive types
7654 //
7655 switch (Type.GetTypeCode(type))
7656 {
7657 case TypeCode.DBNull : return SqlInt32.Null;
7658 case TypeCode.SByte : return ToSqlInt32((SByte) p);
7659 case TypeCode.Int16 : return ToSqlInt32((Int16) p);
7660 case TypeCode.Int32 : return ToSqlInt32((Int32) p);
7661 case TypeCode.Byte : return ToSqlInt32((Byte) p);
7662 case TypeCode.UInt16 : return ToSqlInt32((UInt16) p);
7663 case TypeCode.Char : return ToSqlInt32((Char) p);
7664 case TypeCode.Int64 : return ToSqlInt32((Int64) p);
7665 case TypeCode.UInt32 : return ToSqlInt32((UInt32) p);
7666 case TypeCode.UInt64 : return ToSqlInt32((UInt64) p);
7667 case TypeCode.Single : return ToSqlInt32((Single) p);
7668 case TypeCode.Double : return ToSqlInt32((Double) p);
7669 case TypeCode.Decimal : return ToSqlInt32((Decimal) p);
7670 case TypeCode.String : return ToSqlInt32((String) p);
7671 case TypeCode.Boolean : return ToSqlInt32((Boolean) p);
7672 }
7673
7674 // Nullable Types
7675 //
7676 if (type.IsGenericType)
7677 {
7678 if (p is Boolean?) return ToSqlInt32((Boolean?) p);
7679 if (p is Byte?) return ToSqlInt32((Byte?) p);
7680 if (p is Char?) return ToSqlInt32((Char?) p);
7681 if (p is Decimal?) return ToSqlInt32((Decimal?) p);
7682 if (p is Double?) return ToSqlInt32((Double?) p);
7683 if (p is Int16?) return ToSqlInt32((Int16?) p);
7684 if (p is Int32?) return ToSqlInt32((Int32?) p);
7685 if (p is Int64?) return ToSqlInt32((Int64?) p);
7686 if (p is SByte?) return ToSqlInt32((SByte?) p);
7687 if (p is Single?) return ToSqlInt32((Single?) p);
7688 if (p is UInt16?) return ToSqlInt32((UInt16?) p);
7689 if (p is UInt32?) return ToSqlInt32((UInt32?) p);
7690 if (p is UInt64?) return ToSqlInt32((UInt64?) p);
7691 }
7692
7693 // Sql Types
7694 //
7695 if (p is INullable)
7696 {
7697 if (p is SqlBoolean) return ToSqlInt32((SqlBoolean)p);
7698 if (p is SqlByte) return ToSqlInt32((SqlByte) p);
7699 if (p is SqlDecimal) return ToSqlInt32((SqlDecimal)p);
7700 if (p is SqlDouble) return ToSqlInt32((SqlDouble) p);
7701 if (p is SqlInt16) return ToSqlInt32((SqlInt16) p);
7702 if (p is SqlInt64) return ToSqlInt32((SqlInt64) p);
7703 if (p is SqlMoney) return ToSqlInt32((SqlMoney) p);
7704 if (p is SqlSingle) return ToSqlInt32((SqlSingle) p);
7705 if (p is SqlString) return ToSqlInt32((SqlString) p);
7706 }
7707
7708 // Other Types
7709 //
7710 if (p is Binary) return ToSqlInt32((Binary) p);
7711 if (p is Byte[]) return ToSqlInt32((Byte[]) p);
7712
7713 throw CreateInvalidCastException(p.GetType(), typeof(SqlInt32));
7714 }
7715
7716 #endif
7717
7718 #endregion
7719
7720 #region SqlInt64
7721
7722 #if !SILVERLIGHT
7723
7724 // Simple Types
7725 //
7726 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlInt64</c> value.</summary>
7727 public static SqlInt64 ToSqlInt64(Boolean p) { return p ? (SqlInt64)1 : (SqlInt64)0; }
7728 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlInt64</c> value.</summary>
7729 public static SqlInt64 ToSqlInt64(Byte p) { return p; }
7730 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlInt64</c> value.</summary>
7731 public static SqlInt64 ToSqlInt64(Char p) { return p; }
7732 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlInt64</c> value.</summary>
7733 public static SqlInt64 ToSqlInt64(DateTime p) { return (p - DateTime.MinValue).Ticks; }
7734 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlInt64</c> value.</summary>
7735 public static SqlInt64 ToSqlInt64(DateTimeOffset p) { return (p - DateTime.MinValue).Ticks; }
7736 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlInt64</c> value.</summary>
7737 public static SqlInt64 ToSqlInt64(Decimal p) { return checked((Int64)p); }
7738 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlInt64</c> value.</summary>
7739 public static SqlInt64 ToSqlInt64(Double p) { return checked((Int64)p); }
7740 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlInt64</c> value.</summary>
7741 public static SqlInt64 ToSqlInt64(Int16 p) { return p; }
7742 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlInt64</c> value.</summary>
7743 public static SqlInt64 ToSqlInt64(Int32 p) { return p; }
7744 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlInt64</c> value.</summary>
7745 public static SqlInt64 ToSqlInt64(Int64 p) { return p; }
7746 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlInt64</c> value.</summary>
7747 [CLSCompliant(false)]
7748 public static SqlInt64 ToSqlInt64(SByte p) { return p; }
7749 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlInt64</c> value.</summary>
7750 public static SqlInt64 ToSqlInt64(Single p) { return checked((Int64)p); }
7751 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlInt64</c> value.</summary>
7752 public static SqlInt64 ToSqlInt64(String p) { return p == null? SqlInt64.Null : Int64.Parse(p); }
7753 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlInt64</c> value.</summary>
7754 public static SqlInt64 ToSqlInt64(TimeSpan p) { return p.Ticks; }
7755 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlInt64</c> value.</summary>
7756 [CLSCompliant(false)]
7757 public static SqlInt64 ToSqlInt64(UInt16 p) { return p; }
7758 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlInt64</c> value.</summary>
7759 [CLSCompliant(false)]
7760 public static SqlInt64 ToSqlInt64(UInt32 p) { return p; }
7761 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlInt64</c> value.</summary>
7762 [CLSCompliant(false)]
7763 public static SqlInt64 ToSqlInt64(UInt64 p) { return checked((Int64)p); }
7764
7765 // Nullable Types
7766 //
7767 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7768 public static SqlInt64 ToSqlInt64(Boolean? p) { return p.HasValue && p.Value ? (SqlInt64)1: (SqlInt64)0; }
7769 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7770 public static SqlInt64 ToSqlInt64(Byte? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7771 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7772 public static SqlInt64 ToSqlInt64(Char? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7773 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7774 public static SqlInt64 ToSqlInt64(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
7775 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7776 public static SqlInt64 ToSqlInt64(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
7777 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7778 public static SqlInt64 ToSqlInt64(Decimal? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
7779 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7780 public static SqlInt64 ToSqlInt64(Double? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
7781 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7782 public static SqlInt64 ToSqlInt64(Int16? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7783 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7784 public static SqlInt64 ToSqlInt64(Int32? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7785 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7786 public static SqlInt64 ToSqlInt64(Int64? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7787 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7788 [CLSCompliant(false)]
7789 public static SqlInt64 ToSqlInt64(SByte? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7790 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7791 public static SqlInt64 ToSqlInt64(Single? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
7792 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7793 public static SqlInt64 ToSqlInt64(TimeSpan? p) { return p.HasValue ? p.Value.Ticks : 0; }
7794 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7795 [CLSCompliant(false)]
7796 public static SqlInt64 ToSqlInt64(UInt16? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7797 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7798 [CLSCompliant(false)]
7799 public static SqlInt64 ToSqlInt64(UInt32? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
7800 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlInt64</c> value.</summary>
7801 [CLSCompliant(false)]
7802 public static SqlInt64 ToSqlInt64(UInt64? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
7803
7804 // Sql Types
7805 //
7806 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlInt64</c> value.</summary>
7807 public static SqlInt64 ToSqlInt64(SqlBoolean p) { return p.ToSqlInt64(); }
7808 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlInt64</c> value.</summary>
7809 public static SqlInt64 ToSqlInt64(SqlByte p) { return p.ToSqlInt64(); }
7810 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>SqlInt64</c> value.</summary>
7811 public static SqlInt64 ToSqlInt64(SqlDateTime p) { return p.IsNull? SqlInt64.Null: ToInt64(p.Value); }
7812 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlInt64</c> value.</summary>
7813 public static SqlInt64 ToSqlInt64(SqlDecimal p) { return p.ToSqlInt64(); }
7814 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlInt64</c> value.</summary>
7815 public static SqlInt64 ToSqlInt64(SqlDouble p) { return p.ToSqlInt64(); }
7816 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlInt64</c> value.</summary>
7817 public static SqlInt64 ToSqlInt64(SqlInt16 p) { return p.ToSqlInt64(); }
7818 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlInt64</c> value.</summary>
7819 public static SqlInt64 ToSqlInt64(SqlInt32 p) { return p.ToSqlInt64(); }
7820 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlInt64</c> value.</summary>
7821 public static SqlInt64 ToSqlInt64(SqlMoney p) { return p.ToSqlInt64(); }
7822 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlInt64</c> value.</summary>
7823 public static SqlInt64 ToSqlInt64(SqlSingle p) { return p.ToSqlInt64(); }
7824 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlInt64</c> value.</summary>
7825 public static SqlInt64 ToSqlInt64(SqlString p) { return p.ToSqlInt64(); }
7826
7827 // Other Types
7828 //
7829 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlInt64</c> value.</summary>
7830 public static SqlInt64 ToSqlInt64(Binary p) { return p == null || p.Length == 0 ? SqlInt64.Null : BitConverter.ToInt64(p.ToArray(), 0); }
7831 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlInt64</c> value.</summary>
7832 public static SqlInt64 ToSqlInt64(Byte[] p) { return p == null || p.Length == 0 ? SqlInt64.Null : BitConverter.ToInt64(p, 0); }
7833
7834 // From Object
7835 //
7836 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlInt64</c> value.</summary>
7837 public static SqlInt64 ToSqlInt64(object p)
7838 {
7839 if (p == null) return SqlInt64.Null;
7840
7841 if (p is SqlInt64) return (SqlInt64)p;
7842
7843 var type = p.GetType();
7844
7845 // Primitive types
7846 //
7847 switch (Type.GetTypeCode(type))
7848 {
7849 case TypeCode.DBNull : return SqlInt64.Null;
7850 case TypeCode.DateTime : return ToSqlInt64((DateTime)p);
7851 case TypeCode.SByte : return ToSqlInt64((SByte) p);
7852 case TypeCode.Int16 : return ToSqlInt64((Int16) p);
7853 case TypeCode.Int32 : return ToSqlInt64((Int32) p);
7854 case TypeCode.Int64 : return ToSqlInt64((Int64) p);
7855 case TypeCode.Byte : return ToSqlInt64((Byte) p);
7856 case TypeCode.UInt16 : return ToSqlInt64((UInt16) p);
7857 case TypeCode.UInt32 : return ToSqlInt64((UInt32) p);
7858 case TypeCode.Char : return ToSqlInt64((Char) p);
7859 case TypeCode.UInt64 : return ToSqlInt64((UInt64) p);
7860 case TypeCode.Single : return ToSqlInt64((Single) p);
7861 case TypeCode.Double : return ToSqlInt64((Double) p);
7862 case TypeCode.Decimal : return ToSqlInt64((Decimal) p);
7863 case TypeCode.String : return ToSqlInt64((String) p);
7864 case TypeCode.Boolean : return ToSqlInt64((Boolean) p);
7865 }
7866
7867 // Simple Types
7868 //
7869 if (p is DateTimeOffset) return ToSqlInt64((DateTimeOffset) p);
7870 if (p is TimeSpan) return ToSqlInt64((TimeSpan) p);
7871
7872 // Nullable Types
7873 //
7874 if (type.IsGenericType)
7875 {
7876 if (p is Boolean?) return ToSqlInt64((Boolean?) p);
7877 if (p is Byte?) return ToSqlInt64((Byte?) p);
7878 if (p is Char?) return ToSqlInt64((Char?) p);
7879 if (p is DateTime?) return ToSqlInt64((DateTime?) p);
7880 if (p is DateTimeOffset?) return ToSqlInt64((DateTimeOffset?)p);
7881 if (p is Decimal?) return ToSqlInt64((Decimal?) p);
7882 if (p is Double?) return ToSqlInt64((Double?) p);
7883 if (p is Int16?) return ToSqlInt64((Int16?) p);
7884 if (p is Int32?) return ToSqlInt64((Int32?) p);
7885 if (p is Int64?) return ToSqlInt64((Int64?) p);
7886 if (p is SByte?) return ToSqlInt64((SByte?) p);
7887 if (p is Single?) return ToSqlInt64((Single?) p);
7888 if (p is TimeSpan?) return ToSqlInt64((TimeSpan?) p);
7889 if (p is UInt16?) return ToSqlInt64((UInt16?) p);
7890 if (p is UInt32?) return ToSqlInt64((UInt32?) p);
7891 if (p is UInt64?) return ToSqlInt64((UInt64?) p);
7892 }
7893
7894 // Sql Types
7895 //
7896 if (p is INullable)
7897 {
7898 if (p is SqlBoolean) return ToSqlInt64((SqlBoolean) p);
7899 if (p is SqlByte) return ToSqlInt64((SqlByte) p);
7900 if (p is SqlDateTime) return ToSqlInt64((SqlDateTime) p);
7901 if (p is SqlDecimal) return ToSqlInt64((SqlDecimal) p);
7902 if (p is SqlDouble) return ToSqlInt64((SqlDouble) p);
7903 if (p is SqlInt16) return ToSqlInt64((SqlInt16) p);
7904 if (p is SqlInt32) return ToSqlInt64((SqlInt32) p);
7905 if (p is SqlMoney) return ToSqlInt64((SqlMoney) p);
7906 if (p is SqlSingle) return ToSqlInt64((SqlSingle) p);
7907 if (p is SqlString) return ToSqlInt64((SqlString) p);
7908 }
7909
7910 // Other Types
7911 //
7912 if (p is Binary) return ToSqlInt64((Binary) p);
7913 if (p is Byte[]) return ToSqlInt64((Byte[]) p);
7914
7915 throw CreateInvalidCastException(p.GetType(), typeof(SqlInt64));
7916 }
7917
7918 #endif
7919
7920 #endregion
7921
7922 #region SqlMoney
7923
7924 #if !SILVERLIGHT
7925
7926 // Simple Types
7927 //
7928 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlMoney</c> value.</summary>
7929 public static SqlMoney ToSqlMoney(Boolean p) { return p ? (SqlMoney)1 : (SqlMoney)0; }
7930 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlMoney</c> value.</summary>
7931 public static SqlMoney ToSqlMoney(Byte p) { return p; }
7932 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlMoney</c> value.</summary>
7933 public static SqlMoney ToSqlMoney(Char p) { return p; }
7934 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlMoney</c> value.</summary>
7935 public static SqlMoney ToSqlMoney(Decimal p) { return p; }
7936 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlMoney</c> value.</summary>
7937 public static SqlMoney ToSqlMoney(Double p) { return checked((Decimal)p); }
7938 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlMoney</c> value.</summary>
7939 public static SqlMoney ToSqlMoney(Int16 p) { return p; }
7940 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlMoney</c> value.</summary>
7941 public static SqlMoney ToSqlMoney(Int32 p) { return p; }
7942 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlMoney</c> value.</summary>
7943 public static SqlMoney ToSqlMoney(Int64 p) { return p; }
7944 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlMoney</c> value.</summary>
7945 [CLSCompliant(false)]
7946 public static SqlMoney ToSqlMoney(SByte p) { return p; }
7947 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlMoney</c> value.</summary>
7948 public static SqlMoney ToSqlMoney(Single p) { return checked((Decimal)p); }
7949 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlMoney</c> value.</summary>
7950 public static SqlMoney ToSqlMoney(String p) { return p == null? SqlMoney.Null : Decimal.Parse(p); }
7951 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlMoney</c> value.</summary>
7952 [CLSCompliant(false)]
7953 public static SqlMoney ToSqlMoney(UInt16 p) { return p; }
7954 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlMoney</c> value.</summary>
7955 [CLSCompliant(false)]
7956 public static SqlMoney ToSqlMoney(UInt32 p) { return p; }
7957 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlMoney</c> value.</summary>
7958 [CLSCompliant(false)]
7959 public static SqlMoney ToSqlMoney(UInt64 p) { return p; }
7960
7961 // Nullable Types
7962 //
7963 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7964 public static SqlMoney ToSqlMoney(Boolean? p) { return p.HasValue && p.Value ? (SqlMoney)1: (SqlMoney)0; }
7965 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7966 public static SqlMoney ToSqlMoney(Byte? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7967 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7968 public static SqlMoney ToSqlMoney(Char? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7969 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7970 public static SqlMoney ToSqlMoney(Decimal? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7971 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7972 public static SqlMoney ToSqlMoney(Double? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlMoney.Null; }
7973 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7974 public static SqlMoney ToSqlMoney(Int16? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7975 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7976 public static SqlMoney ToSqlMoney(Int32? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7977 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7978 public static SqlMoney ToSqlMoney(Int64? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7979 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7980 [CLSCompliant(false)]
7981 public static SqlMoney ToSqlMoney(SByte? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7982 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7983 public static SqlMoney ToSqlMoney(Single? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlMoney.Null; }
7984 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7985 [CLSCompliant(false)]
7986 public static SqlMoney ToSqlMoney(UInt16? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7987 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7988 [CLSCompliant(false)]
7989 public static SqlMoney ToSqlMoney(UInt32? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7990 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlMoney</c> value.</summary>
7991 [CLSCompliant(false)]
7992 public static SqlMoney ToSqlMoney(UInt64? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
7993
7994 // Sql Types
7995 //
7996 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlMoney</c> value.</summary>
7997 public static SqlMoney ToSqlMoney(SqlBoolean p) { return p.ToSqlMoney(); }
7998 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlMoney</c> value.</summary>
7999 public static SqlMoney ToSqlMoney(SqlByte p) { return p.ToSqlMoney(); }
8000 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlMoney</c> value.</summary>
8001 public static SqlMoney ToSqlMoney(SqlDecimal p) { return p.ToSqlMoney(); }
8002 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlMoney</c> value.</summary>
8003 public static SqlMoney ToSqlMoney(SqlDouble p) { return p.ToSqlMoney(); }
8004 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlMoney</c> value.</summary>
8005 public static SqlMoney ToSqlMoney(SqlInt16 p) { return p.ToSqlMoney(); }
8006 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlMoney</c> value.</summary>
8007 public static SqlMoney ToSqlMoney(SqlInt32 p) { return p.ToSqlMoney(); }
8008 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlMoney</c> value.</summary>
8009 public static SqlMoney ToSqlMoney(SqlInt64 p) { return p.ToSqlMoney(); }
8010 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlMoney</c> value.</summary>
8011 public static SqlMoney ToSqlMoney(SqlSingle p) { return p.ToSqlMoney(); }
8012 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlMoney</c> value.</summary>
8013 public static SqlMoney ToSqlMoney(SqlString p) { return p.ToSqlMoney(); }
8014
8015 // Other Types
8016 //
8017 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlMoney</c> value.</summary>
8018 public static SqlMoney ToSqlMoney(Binary p) { return p == null || p.Length == 0 ? SqlMoney.Null : ToDecimal(p); }
8019 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlMoney</c> value.</summary>
8020 public static SqlMoney ToSqlMoney(Byte[] p) { return p == null || p.Length == 0 ? SqlMoney.Null : ToDecimal(p); }
8021
8022 // From Object
8023 //
8024 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlMoney</c> value.</summary>
8025 public static SqlMoney ToSqlMoney(object p)
8026 {
8027 if (p == null) return SqlMoney.Null;
8028
8029 if (p is SqlMoney) return (SqlMoney)p;
8030
8031 var type = p.GetType();
8032
8033 // Primitive types
8034 //
8035 switch (Type.GetTypeCode(type))
8036 {
8037 case TypeCode.DBNull : return SqlMoney.Null;
8038 case TypeCode.SByte : return ToSqlMoney((SByte) p);
8039 case TypeCode.Int16 : return ToSqlMoney((Int16) p);
8040 case TypeCode.Int32 : return ToSqlMoney((Int32) p);
8041 case TypeCode.Int64 : return ToSqlMoney((Int64) p);
8042 case TypeCode.Byte : return ToSqlMoney((Byte) p);
8043 case TypeCode.UInt16 : return ToSqlMoney((UInt16) p);
8044 case TypeCode.UInt32 : return ToSqlMoney((UInt32) p);
8045 case TypeCode.Char : return ToSqlMoney((Char) p);
8046 case TypeCode.UInt64 : return ToSqlMoney((UInt64) p);
8047 case TypeCode.Decimal : return ToSqlMoney((Decimal) p);
8048 case TypeCode.Single : return ToSqlMoney((Single) p);
8049 case TypeCode.Double : return ToSqlMoney((Double) p);
8050 case TypeCode.String : return ToSqlMoney((String) p);
8051 case TypeCode.Boolean : return ToSqlMoney((Boolean) p);
8052 }
8053
8054 // Nullable Types
8055 //
8056 if (type.IsGenericType)
8057 {
8058 if (p is Boolean?) return ToSqlMoney((Boolean?) p);
8059 if (p is Byte?) return ToSqlMoney((Byte?) p);
8060 if (p is Char?) return ToSqlMoney((Char?) p);
8061 if (p is Decimal?) return ToSqlMoney((Decimal?) p);
8062 if (p is Double?) return ToSqlMoney((Double?) p);
8063 if (p is Int16?) return ToSqlMoney((Int16?) p);
8064 if (p is Int32?) return ToSqlMoney((Int32?) p);
8065 if (p is Int64?) return ToSqlMoney((Int64?) p);
8066 if (p is SByte?) return ToSqlMoney((SByte?) p);
8067 if (p is Single?) return ToSqlMoney((Single?) p);
8068 if (p is UInt16?) return ToSqlMoney((UInt16?) p);
8069 if (p is UInt32?) return ToSqlMoney((UInt32?) p);
8070 if (p is UInt64?) return ToSqlMoney((UInt64?) p);
8071 }
8072
8073 // Sql Types
8074 //
8075 if (p is INullable)
8076 {
8077 if (p is SqlBoolean) return ToSqlMoney((SqlBoolean)p);
8078 if (p is SqlByte) return ToSqlMoney((SqlByte) p);
8079 if (p is SqlDecimal) return ToSqlMoney((SqlDecimal)p);
8080 if (p is SqlDouble) return ToSqlMoney((SqlDouble) p);
8081 if (p is SqlInt16) return ToSqlMoney((SqlInt16) p);
8082 if (p is SqlInt32) return ToSqlMoney((SqlInt32) p);
8083 if (p is SqlInt64) return ToSqlMoney((SqlInt64) p);
8084 if (p is SqlSingle) return ToSqlMoney((SqlSingle) p);
8085 if (p is SqlString) return ToSqlMoney((SqlString) p);
8086 }
8087
8088 // Other Types
8089 //
8090 if (p is Binary) return ToSqlMoney((Binary) p);
8091 if (p is Byte[]) return ToSqlMoney((Byte[]) p);
8092
8093 throw CreateInvalidCastException(p.GetType(), typeof(SqlMoney));
8094 }
8095
8096 #endif
8097
8098 #endregion
8099
8100 #region SqlSingle
8101
8102 #if !SILVERLIGHT
8103
8104 // Simple Types
8105 //
8106 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlSingle</c> value.</summary>
8107 public static SqlSingle ToSqlSingle(Boolean p) { return p ? (SqlSingle)1 : (SqlSingle)0; }
8108 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlSingle</c> value.</summary>
8109 public static SqlSingle ToSqlSingle(Byte p) { return p; }
8110 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlSingle</c> value.</summary>
8111 public static SqlSingle ToSqlSingle(Char p) { return p; }
8112 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlSingle</c> value.</summary>
8113 public static SqlSingle ToSqlSingle(Decimal p) { return checked((Single)p); }
8114 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlSingle</c> value.</summary>
8115 public static SqlSingle ToSqlSingle(Double p) { return checked((Single)p); }
8116 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlSingle</c> value.</summary>
8117 public static SqlSingle ToSqlSingle(Int16 p) { return p; }
8118 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlSingle</c> value.</summary>
8119 public static SqlSingle ToSqlSingle(Int32 p) { return p; }
8120 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlSingle</c> value.</summary>
8121 public static SqlSingle ToSqlSingle(Int64 p) { return p; }
8122 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlSingle</c> value.</summary>
8123 [CLSCompliant(false)]
8124 public static SqlSingle ToSqlSingle(SByte p) { return p; }
8125 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlSingle</c> value.</summary>
8126 public static SqlSingle ToSqlSingle(Single p) { return p; }
8127 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlSingle</c> value.</summary>
8128 public static SqlSingle ToSqlSingle(String p) { return p == null? SqlSingle.Null : Single.Parse(p); }
8129 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlSingle</c> value.</summary>
8130 [CLSCompliant(false)]
8131 public static SqlSingle ToSqlSingle(UInt16 p) { return p; }
8132 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlSingle</c> value.</summary>
8133 [CLSCompliant(false)]
8134 public static SqlSingle ToSqlSingle(UInt32 p) { return p; }
8135 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlSingle</c> value.</summary>
8136 [CLSCompliant(false)]
8137 public static SqlSingle ToSqlSingle(UInt64 p) { return p; }
8138
8139 // Nullable Types
8140 //
8141 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8142 public static SqlSingle ToSqlSingle(Boolean? p) { return p.HasValue && p.Value ? (SqlSingle)1: (SqlSingle)0; }
8143 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8144 public static SqlSingle ToSqlSingle(Byte? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8145 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8146 public static SqlSingle ToSqlSingle(Char? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8147 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8148 public static SqlSingle ToSqlSingle(Decimal? p) { return p.HasValue ? checked((Single)p.Value) : SqlSingle.Null; }
8149 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8150 public static SqlSingle ToSqlSingle(Double? p) { return p.HasValue ? checked((Single)p.Value) : SqlSingle.Null; }
8151 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8152 public static SqlSingle ToSqlSingle(Int16? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8153 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8154 public static SqlSingle ToSqlSingle(Int32? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8155 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8156 public static SqlSingle ToSqlSingle(Int64? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8157 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8158 [CLSCompliant(false)]
8159 public static SqlSingle ToSqlSingle(SByte? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8160 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8161 public static SqlSingle ToSqlSingle(Single? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8162 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8163 [CLSCompliant(false)]
8164 public static SqlSingle ToSqlSingle(UInt16? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8165 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8166 [CLSCompliant(false)]
8167 public static SqlSingle ToSqlSingle(UInt32? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8168 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlSingle</c> value.</summary>
8169 [CLSCompliant(false)]
8170 public static SqlSingle ToSqlSingle(UInt64? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
8171
8172 // Sql Types
8173 //
8174 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlSingle</c> value.</summary>
8175 public static SqlSingle ToSqlSingle(SqlBoolean p) { return p.ToSqlSingle(); }
8176 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlSingle</c> value.</summary>
8177 public static SqlSingle ToSqlSingle(SqlByte p) { return p.ToSqlSingle(); }
8178 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlSingle</c> value.</summary>
8179 public static SqlSingle ToSqlSingle(SqlDecimal p) { return p.ToSqlSingle(); }
8180 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlSingle</c> value.</summary>
8181 public static SqlSingle ToSqlSingle(SqlDouble p) { return p.ToSqlSingle(); }
8182 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlSingle</c> value.</summary>
8183 public static SqlSingle ToSqlSingle(SqlInt16 p) { return p.ToSqlSingle(); }
8184 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlSingle</c> value.</summary>
8185 public static SqlSingle ToSqlSingle(SqlInt32 p) { return p.ToSqlSingle(); }
8186 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlSingle</c> value.</summary>
8187 public static SqlSingle ToSqlSingle(SqlInt64 p) { return p.ToSqlSingle(); }
8188 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlSingle</c> value.</summary>
8189 public static SqlSingle ToSqlSingle(SqlMoney p) { return p.ToSqlSingle(); }
8190 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlSingle</c> value.</summary>
8191 public static SqlSingle ToSqlSingle(SqlString p) { return p.ToSqlSingle(); }
8192
8193 // Other Types
8194 //
8195 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlSingle</c> value.</summary>
8196 public static SqlSingle ToSqlSingle(Binary p) { return p == null || p.Length == 0 ? SqlSingle.Null : BitConverter.ToSingle(p.ToArray(), 0); }
8197 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlSingle</c> value.</summary>
8198 public static SqlSingle ToSqlSingle(Byte[] p) { return p == null || p.Length == 0 ? SqlSingle.Null : BitConverter.ToSingle(p, 0); }
8199
8200 // From Object
8201 //
8202 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlSingle</c> value.</summary>
8203 public static SqlSingle ToSqlSingle(object p)
8204 {
8205 if (p == null) return SqlSingle.Null;
8206
8207 if (p is SqlSingle) return (SqlSingle)p;
8208
8209 var type = p.GetType();
8210
8211 // Primitive types
8212 //
8213 switch (Type.GetTypeCode(type))
8214 {
8215 case TypeCode.DBNull : return SqlSingle.Null;
8216 case TypeCode.SByte : return ToSqlSingle((SByte) p);
8217 case TypeCode.Int16 : return ToSqlSingle((Int16) p);
8218 case TypeCode.Int32 : return ToSqlSingle((Int32) p);
8219 case TypeCode.Int64 : return ToSqlSingle((Int64) p);
8220 case TypeCode.Byte : return ToSqlSingle((Byte) p);
8221 case TypeCode.UInt16 : return ToSqlSingle((UInt16) p);
8222 case TypeCode.UInt32 : return ToSqlSingle((UInt32) p);
8223 case TypeCode.Char : return ToSqlSingle((Char) p);
8224 case TypeCode.UInt64 : return ToSqlSingle((UInt64) p);
8225 case TypeCode.Single : return ToSqlSingle((Single) p);
8226 case TypeCode.Double : return ToSqlSingle((Double) p);
8227 case TypeCode.Decimal : return ToSqlSingle((Decimal) p);
8228 case TypeCode.String : return ToSqlSingle((String) p);
8229 case TypeCode.Boolean : return ToSqlSingle((Boolean) p);
8230 }
8231
8232 // Nullable Types
8233 //
8234 if (type.IsGenericType)
8235 {
8236 if (p is Boolean?) return ToSqlSingle((Boolean?) p);
8237 if (p is Byte?) return ToSqlSingle((Byte?) p);
8238 if (p is Char?) return ToSqlSingle((Char?) p);
8239 if (p is Decimal?) return ToSqlSingle((Decimal?) p);
8240 if (p is Double?) return ToSqlSingle((Double?) p);
8241 if (p is Int16?) return ToSqlSingle((Int16?) p);
8242 if (p is Int32?) return ToSqlSingle((Int32?) p);
8243 if (p is Int64?) return ToSqlSingle((Int64?) p);
8244 if (p is SByte?) return ToSqlSingle((SByte?) p);
8245 if (p is Single?) return ToSqlSingle((Single?) p);
8246 if (p is UInt16?) return ToSqlSingle((UInt16?) p);
8247 if (p is UInt32?) return ToSqlSingle((UInt32?) p);
8248 if (p is UInt64?) return ToSqlSingle((UInt64?) p);
8249 }
8250
8251 // Sql Types
8252 //
8253 if (p is INullable)
8254 {
8255 if (p is SqlBoolean) return ToSqlSingle((SqlBoolean)p);
8256 if (p is SqlByte) return ToSqlSingle((SqlByte) p);
8257 if (p is SqlDecimal) return ToSqlSingle((SqlDecimal)p);
8258 if (p is SqlDouble) return ToSqlSingle((SqlDouble) p);
8259 if (p is SqlInt16) return ToSqlSingle((SqlInt16) p);
8260 if (p is SqlInt32) return ToSqlSingle((SqlInt32) p);
8261 if (p is SqlInt64) return ToSqlSingle((SqlInt64) p);
8262 if (p is SqlMoney) return ToSqlSingle((SqlMoney) p);
8263 if (p is SqlString) return ToSqlSingle((SqlString) p);
8264 }
8265
8266 // Other Types
8267 //
8268 if (p is Binary) return ToSqlSingle((Binary) p);
8269 if (p is Byte[]) return ToSqlSingle((Byte[]) p);
8270
8271 throw CreateInvalidCastException(p.GetType(), typeof(SqlSingle));
8272 }
8273
8274 #endif
8275
8276 #endregion
8277
8278 #region SqlString
8279
8280 #if !SILVERLIGHT
8281
8282 // Simple Types
8283 //
8284 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlString</c> value.</summary>
8285 public static SqlString ToSqlString(Boolean p) { return p.ToString(); }
8286 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlString</c> value.</summary>
8287 public static SqlString ToSqlString(Byte p) { return p.ToString(); }
8288 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlString</c> value.</summary>
8289 public static SqlString ToSqlString(Char p) { return p.ToString(); }
8290 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlString</c> value.</summary>
8291 public static SqlString ToSqlString(DateTime p) { return p.ToString(); }
8292 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlString</c> value.</summary>
8293 public static SqlString ToSqlString(DateTimeOffset p) { return p.ToString(); }
8294 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlString</c> value.</summary>
8295 public static SqlString ToSqlString(Decimal p) { return p.ToString(); }
8296 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlString</c> value.</summary>
8297 public static SqlString ToSqlString(Double p) { return p.ToString(); }
8298 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlString</c> value.</summary>
8299 public static SqlString ToSqlString(Guid p) { return p.ToString(); }
8300 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlString</c> value.</summary>
8301 public static SqlString ToSqlString(Int16 p) { return p.ToString(); }
8302 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlString</c> value.</summary>
8303 public static SqlString ToSqlString(Int32 p) { return p.ToString(); }
8304 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlString</c> value.</summary>
8305 public static SqlString ToSqlString(Int64 p) { return p.ToString(); }
8306 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlString</c> value.</summary>
8307 [CLSCompliant(false)]
8308 public static SqlString ToSqlString(SByte p) { return p.ToString(); }
8309 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlString</c> value.</summary>
8310 public static SqlString ToSqlString(Single p) { return p.ToString(); }
8311 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlString</c> value.</summary>
8312 public static SqlString ToSqlString(String p) { return p ?? SqlString.Null; }
8313 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlString</c> value.</summary>
8314 public static SqlString ToSqlString(TimeSpan p) { return p.ToString(); }
8315 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlString</c> value.</summary>
8316 [CLSCompliant(false)]
8317 public static SqlString ToSqlString(UInt16 p) { return p.ToString(); }
8318 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlString</c> value.</summary>
8319 [CLSCompliant(false)]
8320 public static SqlString ToSqlString(UInt32 p) { return p.ToString(); }
8321 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlString</c> value.</summary>
8322 [CLSCompliant(false)]
8323 public static SqlString ToSqlString(UInt64 p) { return p.ToString(); }
8324
8325 // Nullable Types
8326 //
8327 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlString</c> value.</summary>
8328 public static SqlString ToSqlString(Boolean? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8329 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlString</c> value.</summary>
8330 public static SqlString ToSqlString(Byte? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8331 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlString</c> value.</summary>
8332 public static SqlString ToSqlString(Char? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8333 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlString</c> value.</summary>
8334 public static SqlString ToSqlString(DateTime? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8335 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlString</c> value.</summary>
8336 public static SqlString ToSqlString(DateTimeOffset? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8337 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlString</c> value.</summary>
8338 public static SqlString ToSqlString(Decimal? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8339 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlString</c> value.</summary>
8340 public static SqlString ToSqlString(Double? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8341 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlString</c> value.</summary>
8342 public static SqlString ToSqlString(Guid? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8343 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlString</c> value.</summary>
8344 public static SqlString ToSqlString(Int16? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8345 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlString</c> value.</summary>
8346 public static SqlString ToSqlString(Int32? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8347 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlString</c> value.</summary>
8348 public static SqlString ToSqlString(Int64? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8349 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlString</c> value.</summary>
8350 [CLSCompliant(false)]
8351 public static SqlString ToSqlString(SByte? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8352 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlString</c> value.</summary>
8353 public static SqlString ToSqlString(Single? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8354 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlString</c> value.</summary>
8355 public static SqlString ToSqlString(TimeSpan? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8356 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlString</c> value.</summary>
8357 [CLSCompliant(false)]
8358 public static SqlString ToSqlString(UInt16? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8359 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlString</c> value.</summary>
8360 [CLSCompliant(false)]
8361 public static SqlString ToSqlString(UInt32? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8362 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlString</c> value.</summary>
8363 [CLSCompliant(false)]
8364 public static SqlString ToSqlString(UInt64? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
8365
8366 // Sql Types
8367 //
8368 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlString</c> value.</summary>
8369 public static SqlString ToSqlString(SqlBoolean p) { return p.ToSqlString(); }
8370 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlString</c> value.</summary>
8371 public static SqlString ToSqlString(SqlByte p) { return p.ToSqlString(); }
8372 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>SqlString</c> value.</summary>
8373 public static SqlString ToSqlString(SqlChars p) { return p.ToSqlString(); }
8374 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlString</c> value.</summary>
8375 public static SqlString ToSqlString(SqlDecimal p) { return p.ToSqlString(); }
8376 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlString</c> value.</summary>
8377 public static SqlString ToSqlString(SqlDouble p) { return p.ToSqlString(); }
8378 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>SqlString</c> value.</summary>
8379 public static SqlString ToSqlString(SqlGuid p) { return p.ToSqlString(); }
8380 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlString</c> value.</summary>
8381 public static SqlString ToSqlString(SqlInt16 p) { return p.ToSqlString(); }
8382 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlString</c> value.</summary>
8383 public static SqlString ToSqlString(SqlInt32 p) { return p.ToSqlString(); }
8384 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlString</c> value.</summary>
8385 public static SqlString ToSqlString(SqlInt64 p) { return p.ToSqlString(); }
8386 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlString</c> value.</summary>
8387 public static SqlString ToSqlString(SqlMoney p) { return p.ToSqlString(); }
8388 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlString</c> value.</summary>
8389 public static SqlString ToSqlString(SqlSingle p) { return p.ToSqlString(); }
8390 /// <summary>Converts the value from <c>SqlXml</c> to an equivalent <c>SqlString</c> value.</summary>
8391 public static SqlString ToSqlString(SqlXml p) { return p.IsNull ? SqlString.Null : p.Value; }
8392
8393 // Other Types
8394 //
8395 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlString</c> value.</summary>
8396 public static SqlString ToSqlString(Binary p) { return ToSqlString(p.ToArray()); }
8397 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlString</c> value.</summary>
8398 public static SqlString ToSqlString(Byte[] p) { return p == null ? SqlString.Null : System.Text.Encoding.UTF8.GetString(p, 0, p.Length); }
8399 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>SqlString</c> value.</summary>
8400 public static SqlString ToSqlString(Type p) { return p == null ? SqlString.Null : p.FullName; }
8401 /// <summary>Converts the value from <c>XElement</c> to an equivalent <c>SqlString</c> value.</summary>
8402 public static SqlString ToSqlString(XElement p) { return p == null ? SqlString.Null : p.ToString(); }
8403 /// <summary>Converts the value from <c>XmlDocument</c> to an equivalent <c>SqlString</c> value.</summary>
8404 public static SqlString ToSqlString(XmlDocument p) { return p == null ? SqlString.Null : p.InnerXml; }
8405
8406 // From Object
8407 //
8408 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlString</c> value.</summary>
8409 public static SqlString ToSqlString(object p)
8410 {
8411 if (p == null) return SqlString.Null;
8412
8413 if (p is SqlString) return (SqlString)p;
8414
8415 var type = p.GetType();
8416
8417 // Primitive types
8418 //
8419 switch (Type.GetTypeCode(type))
8420 {
8421 case TypeCode.DBNull : return SqlString.Null;
8422 case TypeCode.SByte : return ToSqlString((SByte) p);
8423 case TypeCode.Int16 : return ToSqlString((Int16) p);
8424 case TypeCode.Int32 : return ToSqlString((Int32) p);
8425 case TypeCode.Int64 : return ToSqlString((Int64) p);
8426 case TypeCode.Byte : return ToSqlString((Byte) p);
8427 case TypeCode.UInt16 : return ToSqlString((UInt16) p);
8428 case TypeCode.UInt32 : return ToSqlString((UInt32) p);
8429 case TypeCode.UInt64 : return ToSqlString((UInt64) p);
8430 case TypeCode.Single : return ToSqlString((Single) p);
8431 case TypeCode.Double : return ToSqlString((Double) p);
8432 case TypeCode.Boolean : return ToSqlString((Boolean) p);
8433 case TypeCode.Decimal : return ToSqlString((Decimal) p);
8434 case TypeCode.Char : return ToSqlString((Char) p);
8435 case TypeCode.DateTime : return ToSqlString((DateTime) p);
8436 case TypeCode.String : return ToSqlString((String) p);
8437 }
8438
8439 // Simple Types
8440 //
8441 if (p is DateTimeOffset) return ToSqlString((DateTimeOffset) p);
8442 if (p is Guid) return ToSqlString((Guid) p);
8443 if (p is TimeSpan) return ToSqlString((TimeSpan) p);
8444
8445 // Nullable Types
8446 //
8447 if (type.IsGenericType)
8448 {
8449 if (p is Boolean?) return ToSqlString((Boolean?) p);
8450 if (p is Byte?) return ToSqlString((Byte?) p);
8451 if (p is Char?) return ToSqlString((Char?) p);
8452 if (p is DateTime?) return ToSqlString((DateTime?) p);
8453 if (p is DateTimeOffset?) return ToSqlString((DateTimeOffset?)p);
8454 if (p is Decimal?) return ToSqlString((Decimal?) p);
8455 if (p is Double?) return ToSqlString((Double?) p);
8456 if (p is Guid?) return ToSqlString((Guid?) p);
8457 if (p is Int16?) return ToSqlString((Int16?) p);
8458 if (p is Int32?) return ToSqlString((Int32?) p);
8459 if (p is Int64?) return ToSqlString((Int64?) p);
8460 if (p is SByte?) return ToSqlString((SByte?) p);
8461 if (p is Single?) return ToSqlString((Single?) p);
8462 if (p is TimeSpan?) return ToSqlString((TimeSpan?) p);
8463 if (p is UInt16?) return ToSqlString((UInt16?) p);
8464 if (p is UInt32?) return ToSqlString((UInt32?) p);
8465 if (p is UInt64?) return ToSqlString((UInt64?) p);
8466 }
8467
8468 // Sql Types
8469 //
8470 if (p is INullable)
8471 {
8472 if (p is SqlBoolean) return ToSqlString((SqlBoolean) p);
8473 if (p is SqlByte) return ToSqlString((SqlByte) p);
8474 if (p is SqlChars) return ToSqlString((SqlChars) p);
8475 if (p is SqlDecimal) return ToSqlString((SqlDecimal) p);
8476 if (p is SqlDouble) return ToSqlString((SqlDouble) p);
8477 if (p is SqlGuid) return ToSqlString((SqlGuid) p);
8478 if (p is SqlInt16) return ToSqlString((SqlInt16) p);
8479 if (p is SqlInt32) return ToSqlString((SqlInt32) p);
8480 if (p is SqlInt64) return ToSqlString((SqlInt64) p);
8481 if (p is SqlMoney) return ToSqlString((SqlMoney) p);
8482 if (p is SqlSingle) return ToSqlString((SqlSingle) p);
8483 if (p is SqlXml) return ToSqlString((SqlXml) p);
8484 }
8485
8486 // Other Types
8487 //
8488 if (p is Binary) return ToSqlString((Binary) p);
8489 if (p is Byte[]) return ToSqlString((Byte[]) p);
8490 if (p is Type) return ToSqlString((Type) p);
8491 if (p is XElement) return ToSqlString((XElement) p);
8492 if (p is XmlDocument) return ToSqlString((XmlDocument) p);
8493
8494 throw CreateInvalidCastException(p.GetType(), typeof(SqlString));
8495 }
8496
8497 #endif
8498
8499 #endregion
8500
8501 #region SqlXml
8502
8503 #if !SILVERLIGHT
8504
8505 // Simple Types
8506 //
8507 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlXml</c> value.</summary>
8508 public static SqlXml ToSqlXml(String p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p))); }
8509
8510 // Sql Types
8511 //
8512 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>SqlXml</c> value.</summary>
8513 public static SqlXml ToSqlXml(SqlBinary p) { return p.IsNull ? SqlXml.Null : new SqlXml(new MemoryStream(p.Value)); }
8514 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>SqlXml</c> value.</summary>
8515 public static SqlXml ToSqlXml(SqlBytes p) { return p.IsNull ? SqlXml.Null : new SqlXml(p.Stream); }
8516 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>SqlXml</c> value.</summary>
8517 public static SqlXml ToSqlXml(SqlChars p) { return p.IsNull ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.ToSqlString().Value))); }
8518 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlXml</c> value.</summary>
8519 public static SqlXml ToSqlXml(SqlString p) { return p.IsNull ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.Value))); }
8520
8521 // Other Types
8522 //
8523 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlXml</c> value.</summary>
8524 public static SqlXml ToSqlXml(Binary p) { return p == null ? SqlXml.Null : new SqlXml(new MemoryStream(p.ToArray())); }
8525 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlXml</c> value.</summary>
8526 public static SqlXml ToSqlXml(Byte[] p) { return p == null ? SqlXml.Null : new SqlXml(new MemoryStream(p)); }
8527 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>SqlXml</c> value.</summary>
8528 public static SqlXml ToSqlXml(Char[] p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(new string(p)))); }
8529 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>SqlXml</c> value.</summary>
8530 public static SqlXml ToSqlXml(Stream p) { return p == null ? SqlXml.Null : new SqlXml(p); }
8531 /// <summary>Converts the value from <c>XElement</c> to an equivalent <c>SqlXml</c> value.</summary>
8532 public static SqlXml ToSqlXml(XElement p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.ToString()))); }
8533 /// <summary>Converts the value from <c>XmlDocument</c> to an equivalent <c>SqlXml</c> value.</summary>
8534 public static SqlXml ToSqlXml(XmlDocument p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.InnerXml))); }
8535 /// <summary>Converts the value from <c>XmlReader</c> to an equivalent <c>SqlXml</c> value.</summary>
8536 public static SqlXml ToSqlXml(XmlReader p) { return p == null ? SqlXml.Null : new SqlXml(p); }
8537
8538 // From Object
8539 //
8540 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlXml</c> value.</summary>
8541 public static SqlXml ToSqlXml(object p)
8542 {
8543 if (p == null) return SqlXml.Null;
8544
8545 if (p is SqlXml) return (SqlXml)p;
8546
8547 var type = p.GetType();
8548
8549 // Primitive types
8550 //
8551 switch (Type.GetTypeCode(type))
8552 {
8553 case TypeCode.DBNull : return SqlXml.Null;
8554 case TypeCode.String : return ToSqlXml((String)p);
8555 }
8556
8557 // Sql Types
8558 //
8559 if (p is INullable)
8560 {
8561 if (p is SqlBinary) return ToSqlXml((SqlBinary) p);
8562 if (p is SqlBytes) return ToSqlXml((SqlBytes) p);
8563 if (p is SqlChars) return ToSqlXml((SqlChars) p);
8564 if (p is SqlString) return ToSqlXml((SqlString) p);
8565 }
8566
8567 // Other Types
8568 //
8569 if (p is Binary) return ToSqlXml((Binary) p);
8570 if (p is Byte[]) return ToSqlXml((Byte[]) p);
8571 if (p is Char[]) return ToSqlXml((Char[]) p);
8572 if (p is Stream) return ToSqlXml((Stream) p);
8573 if (p is XElement) return ToSqlXml((XElement) p);
8574 if (p is XmlDocument) return ToSqlXml((XmlDocument)p);
8575 if (p is XmlReader) return ToSqlXml((XmlReader) p);
8576
8577 throw CreateInvalidCastException(p.GetType(), typeof(SqlXml));
8578 }
8579
8580 #endif
8581
8582 #endregion
8583
8584 #endregion
8585
8586 #region Other Types
8587
8588 #region Binary
8589
8590 #endregion
8591
8592 #region Byte[]
8593
8594 // Simple Types
8595 //
8596 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Byte[]</c> value.</summary>
8597 public static Byte[] ToByteArray(Boolean p) { return BitConverter.GetBytes(p); }
8598 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Byte[]</c> value.</summary>
8599 public static Byte[] ToByteArray(Byte p) { return new[] { p }; }
8600 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Byte[]</c> value.</summary>
8601 public static Byte[] ToByteArray(Char p) { return BitConverter.GetBytes(p); }
8602 #if !SILVERLIGHT
8603 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Byte[]</c> value.</summary>
8604 public static Byte[] ToByteArray(DateTime p) { return ToByteArray(p.ToBinary()); }
8605 #endif
8606 #if !SILVERLIGHT
8607 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Byte[]</c> value.</summary>
8608 public static Byte[] ToByteArray(DateTimeOffset p) { return ToByteArray(p.LocalDateTime.ToBinary()); }
8609 #endif
8610 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Byte[]</c> value.</summary>
8611 public static Byte[] ToByteArray(Double p) { return BitConverter.GetBytes(p); }
8612 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Byte[]</c> value.</summary>
8613 public static Byte[] ToByteArray(Guid p) { return p == Guid.Empty ? (Byte[])null : p.ToByteArray(); }
8614 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Byte[]</c> value.</summary>
8615 public static Byte[] ToByteArray(Int16 p) { return BitConverter.GetBytes(p); }
8616 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Byte[]</c> value.</summary>
8617 public static Byte[] ToByteArray(Int32 p) { return BitConverter.GetBytes(p); }
8618 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Byte[]</c> value.</summary>
8619 public static Byte[] ToByteArray(Int64 p) { return BitConverter.GetBytes(p); }
8620 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Byte[]</c> value.</summary>
8621 [CLSCompliant(false)]
8622 public static Byte[] ToByteArray(SByte p) { return new[] { checked((Byte)p) }; }
8623 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Byte[]</c> value.</summary>
8624 public static Byte[] ToByteArray(Single p) { return BitConverter.GetBytes(p); }
8625 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Byte[]</c> value.</summary>
8626 public static Byte[] ToByteArray(String p) { return p == null ? (Byte[])null : System.Text.Encoding.UTF8.GetBytes(p); }
8627 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Byte[]</c> value.</summary>
8628 public static Byte[] ToByteArray(TimeSpan p) { return ToByteArray(p.Ticks); }
8629 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Byte[]</c> value.</summary>
8630 [CLSCompliant(false)]
8631 public static Byte[] ToByteArray(UInt16 p) { return BitConverter.GetBytes(p); }
8632 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Byte[]</c> value.</summary>
8633 [CLSCompliant(false)]
8634 public static Byte[] ToByteArray(UInt32 p) { return BitConverter.GetBytes(p); }
8635 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Byte[]</c> value.</summary>
8636 [CLSCompliant(false)]
8637 public static Byte[] ToByteArray(UInt64 p) { return BitConverter.GetBytes(p); }
8638
8639 // Nullable Types
8640 //
8641 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Byte[]</c> value.</summary>
8642 public static Byte[] ToByteArray(Boolean? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8643 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Byte[]</c> value.</summary>
8644 public static Byte[] ToByteArray(Byte? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8645 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Byte[]</c> value.</summary>
8646 public static Byte[] ToByteArray(Char? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8647 #if !SILVERLIGHT
8648 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Byte[]</c> value.</summary>
8649 public static Byte[] ToByteArray(DateTime? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8650 #endif
8651 #if !SILVERLIGHT
8652 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Byte[]</c> value.</summary>
8653 public static Byte[] ToByteArray(DateTimeOffset? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8654 #endif
8655 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Byte[]</c> value.</summary>
8656 public static Byte[] ToByteArray(Decimal? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8657 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Byte[]</c> value.</summary>
8658 public static Byte[] ToByteArray(Double? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8659 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Byte[]</c> value.</summary>
8660 public static Byte[] ToByteArray(Guid? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8661 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Byte[]</c> value.</summary>
8662 public static Byte[] ToByteArray(Int16? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8663 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Byte[]</c> value.</summary>
8664 public static Byte[] ToByteArray(Int32? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8665 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Byte[]</c> value.</summary>
8666 public static Byte[] ToByteArray(Int64? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8667 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Byte[]</c> value.</summary>
8668 [CLSCompliant(false)]
8669 public static Byte[] ToByteArray(SByte? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8670 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Byte[]</c> value.</summary>
8671 public static Byte[] ToByteArray(Single? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8672 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Byte[]</c> value.</summary>
8673 public static Byte[] ToByteArray(TimeSpan? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8674 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Byte[]</c> value.</summary>
8675 [CLSCompliant(false)]
8676 public static Byte[] ToByteArray(UInt16? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8677 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Byte[]</c> value.</summary>
8678 [CLSCompliant(false)]
8679 public static Byte[] ToByteArray(UInt32? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8680 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Byte[]</c> value.</summary>
8681 [CLSCompliant(false)]
8682 public static Byte[] ToByteArray(UInt64? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
8683
8684 // Other Types
8685 //
8686 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Byte[]</c> value.</summary>
8687 public static Byte[] ToByteArray(Binary p) { return p == null ? (Byte[])null : p.ToArray(); }
8688
8689 #if !SILVERLIGHT
8690
8691 // Sql Types
8692 //
8693 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Byte[]</c> value.</summary>
8694 public static Byte[] ToByteArray(SqlBinary p) { return p.IsNull ? (Byte[])null : p.Value; }
8695 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Byte[]</c> value.</summary>
8696 public static Byte[] ToByteArray(SqlBoolean p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8697 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Byte[]</c> value.</summary>
8698 public static Byte[] ToByteArray(SqlByte p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8699 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>Byte[]</c> value.</summary>
8700 public static Byte[] ToByteArray(SqlBytes p) { return p.IsNull ? (Byte[])null : p.Value; }
8701 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Byte[]</c> value.</summary>
8702 public static Byte[] ToByteArray(SqlDecimal p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8703 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Byte[]</c> value.</summary>
8704 public static Byte[] ToByteArray(SqlDouble p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8705 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Byte[]</c> value.</summary>
8706 public static Byte[] ToByteArray(SqlGuid p) { return p.IsNull ? (Byte[])null : p.ToByteArray(); }
8707 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Byte[]</c> value.</summary>
8708 public static Byte[] ToByteArray(SqlInt16 p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8709 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Byte[]</c> value.</summary>
8710 public static Byte[] ToByteArray(SqlInt32 p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8711 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Byte[]</c> value.</summary>
8712 public static Byte[] ToByteArray(SqlInt64 p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8713 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Byte[]</c> value.</summary>
8714 public static Byte[] ToByteArray(SqlMoney p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8715 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Byte[]</c> value.</summary>
8716 public static Byte[] ToByteArray(SqlSingle p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8717 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Byte[]</c> value.</summary>
8718 public static Byte[] ToByteArray(SqlString p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
8719
8720 #endif
8721
8722 // From Object
8723 //
8724 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Byte[]</c> value.</summary>
8725 public static Byte[] ToByteArray(object p)
8726 {
8727 if (p == null) return null;
8728
8729 if (p is Byte[]) return (Byte[])p;
8730
8731 var type = p.GetType();
8732
8733 // Primitive types
8734 //
8735 switch (Type.GetTypeCode(type))
8736 {
8737 case TypeCode.DBNull : return null;
8738 case TypeCode.Decimal : return ToByteArray((Decimal) p);
8739 case TypeCode.String : return ToByteArray((String) p);
8740 case TypeCode.Byte : return ToByteArray((Byte) p);
8741 case TypeCode.SByte : return ToByteArray((SByte) p);
8742 #if !SILVERLIGHT
8743 case TypeCode.DateTime : return ToByteArray((DateTime)p);
8744 #endif
8745 case TypeCode.Int16 : return ToByteArray((Int16) p);
8746 case TypeCode.Int32 : return ToByteArray((Int32) p);
8747 case TypeCode.Int64 : return ToByteArray((Int64) p);
8748 case TypeCode.UInt16 : return ToByteArray((UInt16) p);
8749 case TypeCode.UInt32 : return ToByteArray((UInt32) p);
8750 case TypeCode.UInt64 : return ToByteArray((UInt64) p);
8751 case TypeCode.Single : return ToByteArray((Single) p);
8752 case TypeCode.Double : return ToByteArray((Double) p);
8753 case TypeCode.Boolean : return ToByteArray((Boolean) p);
8754 case TypeCode.Char : return ToByteArray((Char) p);
8755 }
8756
8757 // Simple Types
8758 //
8759 #if !SILVERLIGHT
8760 if (p is DateTimeOffset) return ToByteArray((DateTimeOffset) p);
8761 #endif
8762 if (p is Guid) return ToByteArray((Guid) p);
8763 if (p is TimeSpan) return ToByteArray((TimeSpan) p);
8764
8765 // Nullable Types
8766 //
8767 if (type.IsGenericType)
8768 {
8769 if (p is Boolean?) return ToByteArray((Boolean?) p);
8770 if (p is Byte?) return ToByteArray((Byte?) p);
8771 if (p is Char?) return ToByteArray((Char?) p);
8772 #if !SILVERLIGHT
8773 if (p is DateTime?) return ToByteArray((DateTime?) p);
8774 #endif
8775 #if !SILVERLIGHT
8776 if (p is DateTimeOffset?) return ToByteArray((DateTimeOffset?)p);
8777 #endif
8778 if (p is Decimal?) return ToByteArray((Decimal?) p);
8779 if (p is Double?) return ToByteArray((Double?) p);
8780 if (p is Guid?) return ToByteArray((Guid?) p);
8781 if (p is Int16?) return ToByteArray((Int16?) p);
8782 if (p is Int32?) return ToByteArray((Int32?) p);
8783 if (p is Int64?) return ToByteArray((Int64?) p);
8784 if (p is SByte?) return ToByteArray((SByte?) p);
8785 if (p is Single?) return ToByteArray((Single?) p);
8786 if (p is TimeSpan?) return ToByteArray((TimeSpan?) p);
8787 if (p is UInt16?) return ToByteArray((UInt16?) p);
8788 if (p is UInt32?) return ToByteArray((UInt32?) p);
8789 if (p is UInt64?) return ToByteArray((UInt64?) p);
8790 }
8791
8792 // Other Types
8793 //
8794 if (p is Binary) return ToByteArray((Binary) p);
8795 if (p is Char[]) return ToByteArray((Char[]) p);
8796 if (p is Stream) return ToByteArray((Stream) p);
8797
8798 #if !SILVERLIGHT
8799
8800 // Sql Types
8801 //
8802 if (p is INullable)
8803 {
8804 if (p is SqlBinary) return ToByteArray((SqlBinary) p);
8805 if (p is SqlBoolean) return ToByteArray((SqlBoolean) p);
8806 if (p is SqlByte) return ToByteArray((SqlByte) p);
8807 if (p is SqlBytes) return ToByteArray((SqlBytes) p);
8808 if (p is SqlDecimal) return ToByteArray((SqlDecimal) p);
8809 if (p is SqlDouble) return ToByteArray((SqlDouble) p);
8810 if (p is SqlGuid) return ToByteArray((SqlGuid) p);
8811 if (p is SqlInt16) return ToByteArray((SqlInt16) p);
8812 if (p is SqlInt32) return ToByteArray((SqlInt32) p);
8813 if (p is SqlInt64) return ToByteArray((SqlInt64) p);
8814 if (p is SqlMoney) return ToByteArray((SqlMoney) p);
8815 if (p is SqlSingle) return ToByteArray((SqlSingle) p);
8816 if (p is SqlString) return ToByteArray((SqlString) p);
8817 }
8818
8819 #endif
8820
8821 throw CreateInvalidCastException(p.GetType(), typeof(Byte[]));
8822 }
8823
8824 #endregion
8825
8826 #region Char[]
8827
8828 #endregion
8829
8830 #region Stream
8831
8832 // Simple Types
8833 //
8834 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Stream</c> value.</summary>
8835 public static Stream ToStream(Guid p) { return p == Guid.Empty ? Stream.Null : new MemoryStream(p.ToByteArray()); }
8836
8837 // Nullable Types
8838 //
8839 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Stream</c> value.</summary>
8840 public static Stream ToStream(Guid? p) { return p.HasValue ? new MemoryStream(p.Value.ToByteArray()) : Stream.Null; }
8841
8842 // Other Types
8843 //
8844 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Stream</c> value.</summary>
8845 public static Stream ToStream(Binary p) { return p == null ? Stream.Null : new MemoryStream(p.ToArray()); }
8846 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Stream</c> value.</summary>
8847 public static Stream ToStream(Byte[] p) { return p == null ? Stream.Null : new MemoryStream(p); }
8848
8849 #if !SILVERLIGHT
8850
8851 // Sql Types
8852 //
8853 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Stream</c> value.</summary>
8854 public static Stream ToStream(SqlBinary p) { return p.IsNull ? Stream.Null : new MemoryStream(p.Value); }
8855 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>Stream</c> value.</summary>
8856 public static Stream ToStream(SqlBytes p) { return p.IsNull ? Stream.Null : p.Stream; }
8857 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Stream</c> value.</summary>
8858 public static Stream ToStream(SqlGuid p) { return p.IsNull ? Stream.Null : new MemoryStream(p.Value.ToByteArray()); }
8859
8860 #endif
8861
8862 // From Object
8863 //
8864 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Stream</c> value.</summary>
8865 public static Stream ToStream(object p)
8866 {
8867 if (p == null || p is DBNull) return Stream.Null;
8868
8869 if (p is Stream) return (Stream)p;
8870
8871 // Simple Types
8872 //
8873 if (p is Guid) return ToStream((Guid) p);
8874
8875 // Nullable Types
8876 //
8877 var type = p.GetType();
8878
8879 if (type.IsGenericType)
8880 {
8881 if (p is Guid?) return ToStream((Guid?) p);
8882 }
8883
8884 // Other Types
8885 //
8886 if (p is Binary) return ToStream((Binary) p);
8887 if (p is Byte[]) return ToStream((Byte[]) p);
8888
8889 #if !SILVERLIGHT
8890
8891 // Sql Types
8892 //
8893 if (p is INullable)
8894 {
8895 if (p is SqlBinary) return ToStream((SqlBinary)p);
8896 if (p is SqlBytes) return ToStream((SqlBytes) p);
8897 if (p is SqlGuid) return ToStream((SqlGuid) p);
8898 }
8899
8900 #endif
8901
8902 throw CreateInvalidCastException(p.GetType(), typeof(Stream));
8903 }
8904
8905 #endregion
8906
8907 #region Type
8908
8909 // Simple Types
8910 //
8911 #if !SILVERLIGHT
8912 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Type</c> value.</summary>
8913 public static Type ToType(Guid p) { return p == Guid.Empty ? (Type)null : Type.GetTypeFromCLSID(p); }
8914 #endif
8915 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Type</c> value.</summary>
8916 public static Type ToType(String p) { return p == null ? (Type)null : Type.GetType(p); }
8917
8918 // Nullable Types
8919 //
8920 #if !SILVERLIGHT
8921 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Type</c> value.</summary>
8922 public static Type ToType(Guid? p) { return p.HasValue ? Type.GetTypeFromCLSID(p.Value) : (Type)null; }
8923 #endif
8924
8925 // Other Types
8926 //
8927 #if !SILVERLIGHT
8928 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Type</c> value.</summary>
8929 public static Type ToType(Binary p) { return p == null ? (Type)null : Type.GetTypeFromCLSID(ToGuid(p.ToArray())); }
8930 #endif
8931 #if !SILVERLIGHT
8932 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Type</c> value.</summary>
8933 public static Type ToType(Byte[] p) { return p == null ? (Type)null : Type.GetTypeFromCLSID(ToGuid(p)); }
8934 #endif
8935 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>Type</c> value.</summary>
8936 public static Type ToType(Char[] p) { return p == null ? (Type)null : Type.GetType(new string(p)); }
8937
8938 #if !SILVERLIGHT
8939
8940 // Sql Types
8941 //
8942 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>Type</c> value.</summary>
8943 public static Type ToType(SqlChars p) { return p.IsNull ? (Type)null : Type.GetType(new string(p.Value)); }
8944 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Type</c> value.</summary>
8945 public static Type ToType(SqlGuid p) { return p.IsNull ? (Type)null : Type.GetTypeFromCLSID(p.Value); }
8946 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Type</c> value.</summary>
8947 public static Type ToType(SqlString p) { return p.IsNull ? (Type)null : Type.GetType(p.Value); }
8948
8949 #endif
8950
8951 // From Object
8952 //
8953 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Type</c> value.</summary>
8954 public static Type ToType(object p)
8955 {
8956 if (p == null) return null;
8957
8958 if (p is Type) return (Type)p;
8959
8960 var type = p.GetType();
8961
8962 // Primitive types
8963 //
8964 switch (Type.GetTypeCode(type))
8965 {
8966 case TypeCode.DBNull : return null;
8967 case TypeCode.String : return ToType((String)p);
8968 }
8969
8970 // Simple Types
8971 //
8972 #if !SILVERLIGHT
8973 if (p is Guid) return ToType((Guid) p);
8974 #endif
8975
8976 // Nullable Types
8977 //
8978 if (type.IsGenericType)
8979 {
8980 #if !SILVERLIGHT
8981 if (p is Guid?) return ToType((Guid?) p);
8982 #endif
8983 }
8984
8985 // Other Types
8986 //
8987 #if !SILVERLIGHT
8988 if (p is Binary) return ToType((Binary) p);
8989 #endif
8990 #if !SILVERLIGHT
8991 if (p is Byte[]) return ToType((Byte[]) p);
8992 #endif
8993 if (p is Char[]) return ToType((Char[]) p);
8994
8995 #if !SILVERLIGHT
8996
8997 // Sql Types
8998 //
8999 if (p is INullable)
9000 {
9001 if (p is SqlChars) return ToType((SqlChars) p);
9002 if (p is SqlGuid) return ToType((SqlGuid) p);
9003 if (p is SqlString) return ToType((SqlString)p);
9004 }
9005
9006 #endif
9007
9008 throw CreateInvalidCastException(p.GetType(), typeof(Type));
9009 }
9010
9011 #endregion
9012
9013 #region XmlDocument
9014
9015 #if !SILVERLIGHT
9016
9017 #endif
9018
9019 #endregion
9020
9021 #region XmlReader
9022
9023 #if !SILVERLIGHT
9024
9025 #endif
9026
9027 #endregion
9028
9029 #endregion
9030 }
9031 }