annotate Source/Common/Convert.generated.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 //---------------------------------------------------------------------------------------------------
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 // <auto-generated>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 // This code was generated by BLToolkit template for T4.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 // Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 // </auto-generated>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 //---------------------------------------------------------------------------------------------------
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using System.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 using System.Globalization;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 using System.Xml;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 using System.Xml.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 namespace BLToolkit.Common
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 using Properties;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public partial class Convert
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 #region Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 #region Boolean
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public static Boolean ToBoolean(Byte p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 public static Boolean ToBoolean(Decimal p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 public static Boolean ToBoolean(Double p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public static Boolean ToBoolean(Int16 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public static Boolean ToBoolean(Int32 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 public static Boolean ToBoolean(Int64 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public static Boolean ToBoolean(SByte p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 public static Boolean ToBoolean(Single p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 public static Boolean ToBoolean(String p) { return p == null? Configuration.NullableValues.Boolean : p.Length == 1 ? ToBoolean(p[0]) : Boolean.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 public static Boolean ToBoolean(UInt16 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 public static Boolean ToBoolean(UInt32 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public static Boolean ToBoolean(UInt64 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 public static Boolean ToBoolean(Boolean? p) { return p.HasValue && p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 public static Boolean ToBoolean(Byte? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 public static Boolean ToBoolean(Char? p) { return p.HasValue && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 public static Boolean ToBoolean(Decimal? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 public static Boolean ToBoolean(Double? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 public static Boolean ToBoolean(Int16? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 public static Boolean ToBoolean(Int32? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public static Boolean ToBoolean(Int64? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public static Boolean ToBoolean(SByte? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public static Boolean ToBoolean(Single? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public static Boolean ToBoolean(UInt16? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 public static Boolean ToBoolean(UInt32? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 public static Boolean ToBoolean(UInt64? p) { return p.HasValue && p.Value != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 public static Boolean ToBoolean(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Boolean : BitConverter.ToBoolean(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 public static Boolean ToBoolean(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Boolean : BitConverter.ToBoolean(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 public static Boolean ToBoolean(SqlBoolean p) { return !p.IsNull && p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 public static Boolean ToBoolean(SqlByte p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 public static Boolean ToBoolean(SqlDecimal p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public static Boolean ToBoolean(SqlDouble p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 public static Boolean ToBoolean(SqlInt16 p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 public static Boolean ToBoolean(SqlInt32 p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 public static Boolean ToBoolean(SqlInt64 p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 public static Boolean ToBoolean(SqlMoney p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 public static Boolean ToBoolean(SqlSingle p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 public static Boolean ToBoolean(SqlString p) { return !p.IsNull && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 public static Boolean ToBoolean(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 if (p == null) return Configuration.NullableValues.Boolean;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 case TypeCode.DBNull : return Configuration.NullableValues.Boolean;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 case TypeCode.Boolean : return (Boolean)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 case TypeCode.Char : return ToBoolean((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 case TypeCode.String : return ToBoolean((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 case TypeCode.SByte : return ToBoolean((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 case TypeCode.Int16 : return ToBoolean((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 case TypeCode.Int32 : return ToBoolean((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 case TypeCode.Int64 : return ToBoolean((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 case TypeCode.Byte : return ToBoolean((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 case TypeCode.UInt16 : return ToBoolean((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 case TypeCode.UInt32 : return ToBoolean((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 case TypeCode.UInt64 : return ToBoolean((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 case TypeCode.Single : return ToBoolean((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 case TypeCode.Double : return ToBoolean((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 case TypeCode.Decimal : return ToBoolean((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 if (p is Boolean?) return ToBoolean((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 if (p is Byte?) return ToBoolean((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 if (p is Char?) return ToBoolean((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 if (p is Decimal?) return ToBoolean((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 if (p is Double?) return ToBoolean((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 if (p is Int16?) return ToBoolean((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 if (p is Int32?) return ToBoolean((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 if (p is Int64?) return ToBoolean((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 if (p is SByte?) return ToBoolean((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 if (p is Single?) return ToBoolean((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 if (p is UInt16?) return ToBoolean((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 if (p is UInt32?) return ToBoolean((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 if (p is UInt64?) return ToBoolean((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 if (p is Binary) return ToBoolean((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 if (p is Byte[]) return ToBoolean((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 if (p is SqlBoolean) return ToBoolean((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 if (p is SqlByte) return ToBoolean((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 if (p is SqlDecimal) return ToBoolean((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 if (p is SqlDouble) return ToBoolean((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 if (p is SqlInt16) return ToBoolean((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 if (p is SqlInt32) return ToBoolean((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 if (p is SqlInt64) return ToBoolean((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 if (p is SqlMoney) return ToBoolean((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 if (p is SqlSingle) return ToBoolean((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 if (p is SqlString) return ToBoolean((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 if (p is IConvertible) return ((IConvertible)p).ToBoolean(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 throw CreateInvalidCastException(p.GetType(), typeof(Boolean));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 #region Byte
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 public static Byte ToByte(Boolean p) { return p ? (Byte)1 : (Byte)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 public static Byte ToByte(Char p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 public static Byte ToByte(Decimal p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 public static Byte ToByte(Double p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 public static Byte ToByte(Int16 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 public static Byte ToByte(Int32 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 public static Byte ToByte(Int64 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 public static Byte ToByte(SByte p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 public static Byte ToByte(Single p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 public static Byte ToByte(String p) { return p == null? Configuration.NullableValues.Byte : Byte.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 public static Byte ToByte(UInt16 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 public static Byte ToByte(UInt32 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 public static Byte ToByte(UInt64 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 public static Byte ToByte(Boolean? p) { return p.HasValue && p.Value ? (Byte)1: (Byte)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 public static Byte ToByte(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 public static Byte ToByte(Char? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 public static Byte ToByte(Decimal? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252 public static Byte ToByte(Double? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 public static Byte ToByte(Int16? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 public static Byte ToByte(Int32? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 public static Byte ToByte(Int64? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 public static Byte ToByte(SByte? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 public static Byte ToByte(Single? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 public static Byte ToByte(UInt16? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 public static Byte ToByte(UInt32? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 public static Byte ToByte(UInt64? p) { return p.HasValue ? checked((Byte)p.Value) : Configuration.NullableValues.Byte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 public static Byte ToByte(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Byte : p.ToArray()[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 public static Byte ToByte(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Byte : p[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 public static Byte ToByte(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 public static Byte ToByte(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Byte : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 public static Byte ToByte(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 public static Byte ToByte(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 public static Byte ToByte(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 public static Byte ToByte(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 public static Byte ToByte(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 public static Byte ToByte(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302 public static Byte ToByte(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 public static Byte ToByte(SqlString p) { return p.IsNull ? Configuration.NullableValues.Byte : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Byte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 public static Byte ToByte(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 if (p == null) return Configuration.NullableValues.Byte;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 case TypeCode.DBNull : return Configuration.NullableValues.Byte;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 case TypeCode.Byte : return (Byte)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 case TypeCode.SByte : return ToByte((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 case TypeCode.Int16 : return ToByte((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 case TypeCode.Int32 : return ToByte((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326 case TypeCode.Int64 : return ToByte((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 case TypeCode.UInt16 : return ToByte((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328 case TypeCode.UInt32 : return ToByte((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329 case TypeCode.UInt64 : return ToByte((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 case TypeCode.Single : return ToByte((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 case TypeCode.Double : return ToByte((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 case TypeCode.Decimal : return ToByte((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 case TypeCode.Char : return ToByte((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334 case TypeCode.String : return ToByte((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 case TypeCode.Boolean : return ToByte((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342 if (p is Boolean?) return ToByte((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343 if (p is Byte?) return ToByte((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344 if (p is Char?) return ToByte((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 if (p is Decimal?) return ToByte((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 if (p is Double?) return ToByte((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347 if (p is Int16?) return ToByte((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 if (p is Int32?) return ToByte((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349 if (p is Int64?) return ToByte((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350 if (p is SByte?) return ToByte((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 if (p is Single?) return ToByte((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352 if (p is UInt16?) return ToByte((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353 if (p is UInt32?) return ToByte((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354 if (p is UInt64?) return ToByte((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359 if (p is Binary) return ToByte((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 if (p is Byte[]) return ToByte((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368 if (p is SqlBoolean) return ToByte((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369 if (p is SqlByte) return ToByte((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 if (p is SqlDecimal) return ToByte((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 if (p is SqlDouble) return ToByte((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 if (p is SqlInt16) return ToByte((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 if (p is SqlInt32) return ToByte((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374 if (p is SqlInt64) return ToByte((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375 if (p is SqlMoney) return ToByte((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 if (p is SqlSingle) return ToByte((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 if (p is SqlString) return ToByte((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382 if (p is IConvertible) return ((IConvertible)p).ToByte(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 throw CreateInvalidCastException(p.GetType(), typeof(Byte));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 #region Char
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394 public static Char ToChar(Boolean p) { return p ? (Char)1 : (Char)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 public static Char ToChar(Byte p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 public static Char ToChar(Decimal p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400 public static Char ToChar(Double p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 public static Char ToChar(Int16 p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 public static Char ToChar(Int32 p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406 public static Char ToChar(Int64 p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 public static Char ToChar(SByte p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411 public static Char ToChar(Single p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 public static Char ToChar(String p) { return string.IsNullOrEmpty(p)? (Char)0 : p[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 public static Char ToChar(UInt16 p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419 public static Char ToChar(UInt32 p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 public static Char ToChar(UInt64 p) { return checked((Char)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427 public static Char ToChar(Boolean? p) { return p.HasValue && p.Value ? (Char)1: (Char)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429 public static Char ToChar(Byte? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 public static Char ToChar(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433 public static Char ToChar(Decimal? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435 public static Char ToChar(Double? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 public static Char ToChar(Int16? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 public static Char ToChar(Int32? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 public static Char ToChar(Int64? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444 public static Char ToChar(SByte? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
446 public static Char ToChar(Single? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
447 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
448 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
449 public static Char ToChar(UInt16? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452 public static Char ToChar(UInt32? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 public static Char ToChar(UInt64? p) { return p.HasValue ? checked((Char)p.Value) : Configuration.NullableValues.Char; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 public static Char ToChar(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Char : BitConverter.ToChar(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462 public static Char ToChar(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Char : BitConverter.ToChar(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469 public static Char ToChar(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 public static Char ToChar(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473 public static Char ToChar(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475 public static Char ToChar(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 public static Char ToChar(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479 public static Char ToChar(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481 public static Char ToChar(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483 public static Char ToChar(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485 public static Char ToChar(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487 public static Char ToChar(SqlString p) { return p.IsNull ? Configuration.NullableValues.Char : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Char</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494 public static Char ToChar(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496 if (p == null) return Configuration.NullableValues.Char;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504 case TypeCode.DBNull : return Configuration.NullableValues.Char;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505 case TypeCode.Char : return (Char)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506 case TypeCode.SByte : return ToChar((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507 case TypeCode.Int16 : return ToChar((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508 case TypeCode.Int32 : return ToChar((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509 case TypeCode.Int64 : return ToChar((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 case TypeCode.Byte : return ToChar((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
511 case TypeCode.UInt16 : return ToChar((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
512 case TypeCode.UInt32 : return ToChar((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
513 case TypeCode.UInt64 : return ToChar((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
514 case TypeCode.Single : return ToChar((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
515 case TypeCode.Double : return ToChar((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
516 case TypeCode.Decimal : return ToChar((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
517 case TypeCode.String : return ToChar((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
518 case TypeCode.Boolean : return ToChar((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
519 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
520
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
521 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
522 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
523 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
524 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
525 if (p is Boolean?) return ToChar((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
526 if (p is Byte?) return ToChar((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
527 if (p is Char?) return ToChar((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
528 if (p is Decimal?) return ToChar((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
529 if (p is Double?) return ToChar((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
530 if (p is Int16?) return ToChar((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
531 if (p is Int32?) return ToChar((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
532 if (p is Int64?) return ToChar((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
533 if (p is SByte?) return ToChar((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
534 if (p is Single?) return ToChar((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
535 if (p is UInt16?) return ToChar((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
536 if (p is UInt32?) return ToChar((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
537 if (p is UInt64?) return ToChar((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
538 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
539
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
540 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
541 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
542 if (p is Binary) return ToChar((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
543 if (p is Byte[]) return ToChar((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
544
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
545 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
546
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
547 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
548 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
549 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
550 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
551 if (p is SqlBoolean) return ToChar((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
552 if (p is SqlByte) return ToChar((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
553 if (p is SqlDecimal) return ToChar((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
554 if (p is SqlDouble) return ToChar((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
555 if (p is SqlInt16) return ToChar((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
556 if (p is SqlInt32) return ToChar((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
557 if (p is SqlInt64) return ToChar((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
558 if (p is SqlMoney) return ToChar((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
559 if (p is SqlSingle) return ToChar((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
560 if (p is SqlString) return ToChar((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
561 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
562
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
563 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
564
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
565 if (p is IConvertible) return ((IConvertible)p).ToChar(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
566
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
567 throw CreateInvalidCastException(p.GetType(), typeof(Char));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
568 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
569
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
570 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
571
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
572 #region DateTime
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
573
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
574 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
575 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
576 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
577 public static DateTime ToDateTime(DateTimeOffset p) { return p.LocalDateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
578 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
579 public static DateTime ToDateTime(Double p) { return DateTime.MinValue + TimeSpan.FromDays (p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
580 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
581 public static DateTime ToDateTime(Int64 p) { return DateTime.MinValue + TimeSpan.FromTicks(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
582 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
583 public static DateTime ToDateTime(String p) { return p == null ? Configuration.NullableValues.DateTime : DateTime.Parse(p, null, DateTimeStyles.NoCurrentDateDefault); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
584 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
585 public static DateTime ToDateTime(TimeSpan p) { return DateTime.MinValue + p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
586
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
587 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
588 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
589 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
590 public static DateTime ToDateTime(DateTime? p) { return p.HasValue ? p.Value : Configuration.NullableValues.DateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
591 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
592 public static DateTime ToDateTime(DateTimeOffset? p) { return p.HasValue ? p.Value.LocalDateTime : Configuration.NullableValues.DateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
593 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
594 public static DateTime ToDateTime(Double? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromDays (p.Value): Configuration.NullableValues.DateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
595 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
596 public static DateTime ToDateTime(Int64? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromTicks(p.Value): Configuration.NullableValues.DateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
597 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
598 public static DateTime ToDateTime(TimeSpan? p) { return p.HasValue ? DateTime.MinValue + p.Value : Configuration.NullableValues.DateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
599
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
600 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
601 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
602 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
603 public static DateTime ToDateTime(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.DateTime : DateTime.FromBinary(ToInt64(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
604 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
605 public static DateTime ToDateTime(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.DateTime : DateTime.FromBinary(ToInt64(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
606
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
607 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
608
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
609 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
610 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
611 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
612 public static DateTime ToDateTime(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.DateTime : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
613 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
614 public static DateTime ToDateTime(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.DateTime : DateTime.MinValue + TimeSpan.FromDays (p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
615 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
616 public static DateTime ToDateTime(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.DateTime : DateTime.MinValue + TimeSpan.FromTicks(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
617 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
618 public static DateTime ToDateTime(SqlString p) { return p.IsNull ? Configuration.NullableValues.DateTime : ToDateTime(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
619
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
620 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
621
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
622 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
623 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
624 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
625 public static DateTime ToDateTime(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
626 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
627 if (p == null) return Configuration.NullableValues.DateTime;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
628
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
629 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
630
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
631 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
632 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
633 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
634 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
635 case TypeCode.DBNull : return Configuration.NullableValues.DateTime;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
636 case TypeCode.DateTime : return (DateTime)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
637 case TypeCode.String : return ToDateTime((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
638 case TypeCode.Int64 : return ToDateTime((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
639 case TypeCode.Double : return ToDateTime((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
640 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
641
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
642 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
643 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
644 if (p is DateTimeOffset) return ToDateTime((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
645 if (p is TimeSpan) return ToDateTime((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
646
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
647 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
648 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
649 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
650 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
651 if (p is DateTime?) return ToDateTime((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
652 if (p is DateTimeOffset?) return ToDateTime((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
653 if (p is Double?) return ToDateTime((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
654 if (p is Int64?) return ToDateTime((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
655 if (p is TimeSpan?) return ToDateTime((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
656 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
657
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
658 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
659 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
660 if (p is Binary) return ToDateTime((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
661 if (p is Byte[]) return ToDateTime((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
662
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
663 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
664
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
665 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
666 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
667 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
668 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
669 if (p is SqlDateTime) return ToDateTime((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
670 if (p is SqlDouble) return ToDateTime((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
671 if (p is SqlInt64) return ToDateTime((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
672 if (p is SqlString) return ToDateTime((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
673 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
674
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
675 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
676
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
677 if (p is IConvertible) return ((IConvertible)p).ToDateTime(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
678
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
679 throw CreateInvalidCastException(p.GetType(), typeof(DateTime));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
680 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
681
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
682 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
683
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
684 #region DateTimeOffset
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
685
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
686 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
687 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
688 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
689 public static DateTimeOffset ToDateTimeOffset(DateTime p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
690 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
691 public static DateTimeOffset ToDateTimeOffset(Double p) { return DateTimeOffset.MinValue + TimeSpan.FromDays (p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
692 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
693 public static DateTimeOffset ToDateTimeOffset(Int64 p) { return DateTimeOffset.MinValue + TimeSpan.FromTicks(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
694 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
695 public static DateTimeOffset ToDateTimeOffset(String p) { return p == null? DateTimeOffset.MinValue : DateTimeOffset.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
696 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
697 public static DateTimeOffset ToDateTimeOffset(TimeSpan p) { return DateTimeOffset.MinValue + p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
698
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
699 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
700 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
701 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
702 public static DateTimeOffset ToDateTimeOffset(DateTime? p) { return p.HasValue ? p.Value : DateTimeOffset.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
703 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
704 public static DateTimeOffset ToDateTimeOffset(DateTimeOffset? p) { return p.HasValue ? p.Value : DateTimeOffset.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
705 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
706 public static DateTimeOffset ToDateTimeOffset(Double? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value): DateTimeOffset.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
707 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
708 public static DateTimeOffset ToDateTimeOffset(Int64? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value): DateTimeOffset.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
709 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
710 public static DateTimeOffset ToDateTimeOffset(TimeSpan? p) { return p.HasValue ? DateTimeOffset.MinValue + p.Value : DateTimeOffset.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
711
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
712 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
713 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
714 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
715 public static DateTimeOffset ToDateTimeOffset(Binary p) { return p == null || p.Length == 0 ? DateTimeOffset.MinValue : new DateTimeOffset(ToDateTime(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
716 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
717 public static DateTimeOffset ToDateTimeOffset(Byte[] p) { return p == null || p.Length == 0 ? DateTimeOffset.MinValue : new DateTimeOffset(ToDateTime(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
718
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
719 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
720
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
721 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
722 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
723 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
724 public static DateTimeOffset ToDateTimeOffset(SqlDateTime p) { return p.IsNull ? DateTimeOffset.MinValue : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
725 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
726 public static DateTimeOffset ToDateTimeOffset(SqlDouble p) { return p.IsNull ? DateTimeOffset.MinValue : DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
727 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
728 public static DateTimeOffset ToDateTimeOffset(SqlInt64 p) { return p.IsNull ? DateTimeOffset.MinValue : DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
729 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
730 public static DateTimeOffset ToDateTimeOffset(SqlString p) { return p.IsNull ? DateTimeOffset.MinValue : ToDateTimeOffset(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
731
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
732 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
733
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
734 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
735 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
736 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTimeOffset</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
737 public static DateTimeOffset ToDateTimeOffset(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
738 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
739 if (p == null) return DateTimeOffset.MinValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
740
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
741 if (p is DateTimeOffset) return (DateTimeOffset)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
742
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
743 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
744
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
745 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
746 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
747 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
748 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
749 case TypeCode.DBNull : return DateTimeOffset.MinValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
750 case TypeCode.Int64 : return ToDateTimeOffset((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
751 case TypeCode.Double : return ToDateTimeOffset((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
752 case TypeCode.DateTime : return ToDateTimeOffset((DateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
753 case TypeCode.String : return ToDateTimeOffset((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
754 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
755
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
756 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
757 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
758 if (p is TimeSpan) return ToDateTimeOffset((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
759
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
760 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
761 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
762 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
763 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
764 if (p is DateTime?) return ToDateTimeOffset((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
765 if (p is DateTimeOffset?) return ToDateTimeOffset((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
766 if (p is Double?) return ToDateTimeOffset((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
767 if (p is Int64?) return ToDateTimeOffset((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
768 if (p is TimeSpan?) return ToDateTimeOffset((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
769 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
770
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
771 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
772 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
773 if (p is Binary) return ToDateTimeOffset((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
774 if (p is Byte[]) return ToDateTimeOffset((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
775
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
776 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
777
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
778 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
779 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
780 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
781 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
782 if (p is SqlDateTime) return ToDateTimeOffset((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
783 if (p is SqlDouble) return ToDateTimeOffset((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
784 if (p is SqlInt64) return ToDateTimeOffset((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
785 if (p is SqlString) return ToDateTimeOffset((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
786 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
787
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
788 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
789
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
790 throw CreateInvalidCastException(p.GetType(), typeof(DateTimeOffset));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
791 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
792
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
793 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
794
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
795 #region Decimal
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
796
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
797 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
798 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
799 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
800 public static Decimal ToDecimal(Boolean p) { return p ? (Decimal)1 : (Decimal)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
801 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
802 public static Decimal ToDecimal(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
803 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
804 public static Decimal ToDecimal(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
805 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
806 public static Decimal ToDecimal(Double p) { return checked((Decimal)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
807 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
808 public static Decimal ToDecimal(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
809 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
810 public static Decimal ToDecimal(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
811 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
812 public static Decimal ToDecimal(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
813 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
814 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
815 public static Decimal ToDecimal(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
816 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
817 public static Decimal ToDecimal(Single p) { return checked((Decimal)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
818 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
819 public static Decimal ToDecimal(String p) { return p == null? Configuration.NullableValues.Decimal : Decimal.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
820 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
821 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
822 public static Decimal ToDecimal(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
823 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
824 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
825 public static Decimal ToDecimal(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
826 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
827 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
828 public static Decimal ToDecimal(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
829
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
830 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
831 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
832 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
833 public static Decimal ToDecimal(Boolean? p) { return p.HasValue && p.Value ? (Decimal)1: (Decimal)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
834 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
835 public static Decimal ToDecimal(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
836 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
837 public static Decimal ToDecimal(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
838 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
839 public static Decimal ToDecimal(Decimal? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
840 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
841 public static Decimal ToDecimal(Double? p) { return p.HasValue ? checked((Decimal)p.Value) : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
842 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
843 public static Decimal ToDecimal(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
844 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
845 public static Decimal ToDecimal(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
846 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
847 public static Decimal ToDecimal(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
848 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
849 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
850 public static Decimal ToDecimal(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
851 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
852 public static Decimal ToDecimal(Single? p) { return p.HasValue ? checked((Decimal)p.Value) : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
853 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
854 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
855 public static Decimal ToDecimal(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
856 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
857 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
858 public static Decimal ToDecimal(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
859 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
860 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
861 public static Decimal ToDecimal(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Decimal; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
862
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
863 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
864
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
865 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
866 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
867 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
868 public static Decimal ToDecimal(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
869 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
870 public static Decimal ToDecimal(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
871 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
872 public static Decimal ToDecimal(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
873 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
874 public static Decimal ToDecimal(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
875 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
876 public static Decimal ToDecimal(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
877 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
878 public static Decimal ToDecimal(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
879 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
880 public static Decimal ToDecimal(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
881 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
882 public static Decimal ToDecimal(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Decimal : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
883 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
884 public static Decimal ToDecimal(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
885 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
886 public static Decimal ToDecimal(SqlString p) { return p.IsNull ? Configuration.NullableValues.Decimal : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
887
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
888 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
889
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
890 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
891 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
892 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
893 public static Decimal ToDecimal(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
894 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
895 if (p == null) return Configuration.NullableValues.Decimal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
896
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
897 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
898
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
899 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
900 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
901 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
902 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
903 case TypeCode.DBNull : return Configuration.NullableValues.Decimal;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
904 case TypeCode.Decimal : return (Decimal)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
905 case TypeCode.SByte : return ToDecimal((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
906 case TypeCode.Int16 : return ToDecimal((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
907 case TypeCode.Int32 : return ToDecimal((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
908 case TypeCode.Int64 : return ToDecimal((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
909 case TypeCode.Byte : return ToDecimal((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
910 case TypeCode.UInt16 : return ToDecimal((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
911 case TypeCode.UInt32 : return ToDecimal((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
912 case TypeCode.Char : return ToDecimal((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
913 case TypeCode.UInt64 : return ToDecimal((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
914 case TypeCode.Single : return ToDecimal((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
915 case TypeCode.Double : return ToDecimal((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
916 case TypeCode.String : return ToDecimal((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
917 case TypeCode.Boolean : return ToDecimal((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
918 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
919
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
920 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
921 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
922 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
923 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
924 if (p is Boolean?) return ToDecimal((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
925 if (p is Byte?) return ToDecimal((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
926 if (p is Char?) return ToDecimal((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
927 if (p is Decimal?) return ToDecimal((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
928 if (p is Double?) return ToDecimal((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
929 if (p is Int16?) return ToDecimal((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
930 if (p is Int32?) return ToDecimal((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
931 if (p is Int64?) return ToDecimal((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
932 if (p is SByte?) return ToDecimal((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
933 if (p is Single?) return ToDecimal((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
934 if (p is UInt16?) return ToDecimal((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
935 if (p is UInt32?) return ToDecimal((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
936 if (p is UInt64?) return ToDecimal((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
937 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
938
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
939 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
940 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
941 if (p is Binary) return ToDecimal((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
942 if (p is Byte[]) return ToDecimal((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
943
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
944 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
945
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
946 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
947 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
948 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
949 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
950 if (p is SqlBoolean) return ToDecimal((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
951 if (p is SqlByte) return ToDecimal((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
952 if (p is SqlDecimal) return ToDecimal((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
953 if (p is SqlDouble) return ToDecimal((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
954 if (p is SqlInt16) return ToDecimal((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
955 if (p is SqlInt32) return ToDecimal((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
956 if (p is SqlInt64) return ToDecimal((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
957 if (p is SqlMoney) return ToDecimal((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
958 if (p is SqlSingle) return ToDecimal((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
959 if (p is SqlString) return ToDecimal((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
960 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
961
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
962 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
963
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
964 if (p is IConvertible) return ((IConvertible)p).ToDecimal(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
965
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
966 throw CreateInvalidCastException(p.GetType(), typeof(Decimal));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
967 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
968
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
969 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
970
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
971 #region Double
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
972
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
973 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
974 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
975 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
976 public static Double ToDouble(Boolean p) { return p ? (Double)1 : (Double)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
977 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
978 public static Double ToDouble(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
979 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
980 public static Double ToDouble(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
981 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
982 public static Double ToDouble(DateTime p) { return (p - DateTime.MinValue).TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
983 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
984 public static Double ToDouble(DateTimeOffset p) { return (p - DateTimeOffset.MinValue).TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
985 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
986 public static Double ToDouble(Decimal p) { return checked((Double)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
987 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
988 public static Double ToDouble(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
989 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
990 public static Double ToDouble(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
991 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
992 public static Double ToDouble(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
993 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
994 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
995 public static Double ToDouble(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
996 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
997 public static Double ToDouble(Single p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
998 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
999 public static Double ToDouble(String p) { return p == null? Configuration.NullableValues.Double : Double.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1000 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1001 public static Double ToDouble(TimeSpan p) { return p.TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1002 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1003 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1004 public static Double ToDouble(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1005 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1006 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1007 public static Double ToDouble(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1008 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1009 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1010 public static Double ToDouble(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1011
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1012 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1013 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1014 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1015 public static Double ToDouble(Boolean? p) { return p.HasValue && p.Value ? (Double)1: (Double)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1016 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1017 public static Double ToDouble(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1018 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1019 public static Double ToDouble(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1020 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1021 public static Double ToDouble(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).TotalDays : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1022 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1023 public static Double ToDouble(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTimeOffset.MinValue).TotalDays : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1024 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1025 public static Double ToDouble(Decimal? p) { return p.HasValue ? checked((Double)p.Value) : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1026 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1027 public static Double ToDouble(Double? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1028 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1029 public static Double ToDouble(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1030 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1031 public static Double ToDouble(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1032 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1033 public static Double ToDouble(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1034 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1035 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1036 public static Double ToDouble(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1037 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1038 public static Double ToDouble(Single? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1039 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1040 public static Double ToDouble(TimeSpan? p) { return p.HasValue ? p.Value.TotalDays : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1041 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1042 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1043 public static Double ToDouble(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1044 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1045 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1046 public static Double ToDouble(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1047 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1048 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1049 public static Double ToDouble(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Double; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1050
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1051 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1052 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1053 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1054 public static Double ToDouble(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Double : BitConverter.ToDouble(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1055 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1056 public static Double ToDouble(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Double : BitConverter.ToDouble(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1057
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1058 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1059
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1060 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1061 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1062 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1063 public static Double ToDouble(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1064 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1065 public static Double ToDouble(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1066 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1067 public static Double ToDouble(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1068 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1069 public static Double ToDouble(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1070 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1071 public static Double ToDouble(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1072 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1073 public static Double ToDouble(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1074 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1075 public static Double ToDouble(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1076 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1077 public static Double ToDouble(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1078 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1079 public static Double ToDouble(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1080 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1081 public static Double ToDouble(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Double : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1082 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1083 public static Double ToDouble(SqlString p) { return p.IsNull ? Configuration.NullableValues.Double : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1084
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1085 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1086
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1087 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1088 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1089 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Double</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1090 public static Double ToDouble(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1091 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1092 if (p == null) return Configuration.NullableValues.Double;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1093
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1094 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1095
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1096 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1097 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1098 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1099 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1100 case TypeCode.DBNull : return Configuration.NullableValues.Double;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1101 case TypeCode.Double : return (Double)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1102 case TypeCode.DateTime : return ToDouble((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1103 case TypeCode.SByte : return ToDouble((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1104 case TypeCode.Int16 : return ToDouble((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1105 case TypeCode.Int32 : return ToDouble((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1106 case TypeCode.Int64 : return ToDouble((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1107 case TypeCode.Byte : return ToDouble((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1108 case TypeCode.UInt16 : return ToDouble((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1109 case TypeCode.UInt32 : return ToDouble((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1110 case TypeCode.Char : return ToDouble((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1111 case TypeCode.UInt64 : return ToDouble((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1112 case TypeCode.Single : return ToDouble((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1113 case TypeCode.Decimal : return ToDouble((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1114 case TypeCode.String : return ToDouble((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1115 case TypeCode.Boolean : return ToDouble((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1116 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1118 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1119 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1120 if (p is DateTimeOffset) return ToDouble((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1121 if (p is TimeSpan) return ToDouble((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1122
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1123 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1124 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1125 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1126 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1127 if (p is Boolean?) return ToDouble((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1128 if (p is Byte?) return ToDouble((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1129 if (p is Char?) return ToDouble((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1130 if (p is DateTime?) return ToDouble((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1131 if (p is DateTimeOffset?) return ToDouble((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1132 if (p is Decimal?) return ToDouble((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1133 if (p is Double?) return ToDouble((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1134 if (p is Int16?) return ToDouble((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1135 if (p is Int32?) return ToDouble((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1136 if (p is Int64?) return ToDouble((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1137 if (p is SByte?) return ToDouble((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1138 if (p is Single?) return ToDouble((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1139 if (p is TimeSpan?) return ToDouble((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1140 if (p is UInt16?) return ToDouble((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1141 if (p is UInt32?) return ToDouble((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1142 if (p is UInt64?) return ToDouble((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1143 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1144
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1145 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1146 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1147 if (p is Binary) return ToDouble((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1148 if (p is Byte[]) return ToDouble((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1149
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1150 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1151
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1152 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1153 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1154 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1155 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1156 if (p is SqlBoolean) return ToDouble((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1157 if (p is SqlByte) return ToDouble((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1158 if (p is SqlDateTime) return ToDouble((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1159 if (p is SqlDecimal) return ToDouble((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1160 if (p is SqlDouble) return ToDouble((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1161 if (p is SqlInt16) return ToDouble((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1162 if (p is SqlInt32) return ToDouble((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1163 if (p is SqlInt64) return ToDouble((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1164 if (p is SqlMoney) return ToDouble((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1165 if (p is SqlSingle) return ToDouble((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1166 if (p is SqlString) return ToDouble((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1167 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1169 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1170
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1171 if (p is IConvertible) return ((IConvertible)p).ToDouble(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1172
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1173 throw CreateInvalidCastException(p.GetType(), typeof(Double));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1174 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1175
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1176 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1177
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1178 #region Guid
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1179
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1180 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1181 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1182 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1183 public static Guid ToGuid(String p) { return p == null ? Configuration.NullableValues.Guid : new Guid(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1184
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1185 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1186 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1187 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1188 public static Guid ToGuid(Guid? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Guid; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1189
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1190 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1191 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1192 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1193 public static Guid ToGuid(Binary p) { return p == null ? Configuration.NullableValues.Guid : new Guid(p.ToArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1194 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1195 public static Guid ToGuid(Byte[] p) { return p == null ? Configuration.NullableValues.Guid : new Guid(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1196 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1197 public static Guid ToGuid(Type p) { return p == null ? Configuration.NullableValues.Guid : p.GUID; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1198
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1199 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1200
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1201 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1202 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1203 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1204 public static Guid ToGuid(SqlBinary p) { return p.IsNull ? Configuration.NullableValues.Guid : p.ToSqlGuid().Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1205 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1206 public static Guid ToGuid(SqlGuid p) { return p.IsNull ? Configuration.NullableValues.Guid : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1207 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1208 public static Guid ToGuid(SqlString p) { return p.IsNull ? Configuration.NullableValues.Guid : new Guid(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1209
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1210 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1211
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1212 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1213 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1214 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Guid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1215 public static Guid ToGuid(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1216 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1217 if (p == null) return Configuration.NullableValues.Guid;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1218
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1219 if (p is Guid) return (Guid)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1220
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1221 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1222
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1223 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1224 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1225 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1226 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1227 case TypeCode.DBNull : return Configuration.NullableValues.Guid;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1228 case TypeCode.String : return ToGuid((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1229 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1230
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1231 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1232 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1233 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1234 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1235 if (p is Guid?) return ToGuid((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1236 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1237
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1238 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1239 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1240 if (p is Binary) return ToGuid((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1241 if (p is Byte[]) return ToGuid((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1242 if (p is Type) return ToGuid((Type) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1243
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1244 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1245
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1246 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1247 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1248 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1249 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1250 if (p is SqlBinary) return ToGuid((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1251 if (p is SqlGuid) return ToGuid((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1252 if (p is SqlString) return ToGuid((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1253 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1254
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1255 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1256
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1257 throw CreateInvalidCastException(p.GetType(), typeof(Guid));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1258 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1259
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1260 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1261
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1262 #region Int16
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1263
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1264 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1265 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1266 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1267 public static Int16 ToInt16(Boolean p) { return p ? (Int16)1 : (Int16)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1268 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1269 public static Int16 ToInt16(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1270 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1271 public static Int16 ToInt16(Char p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1272 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1273 public static Int16 ToInt16(Decimal p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1274 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1275 public static Int16 ToInt16(Double p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1276 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1277 public static Int16 ToInt16(Int32 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1278 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1279 public static Int16 ToInt16(Int64 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1280 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1281 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1282 public static Int16 ToInt16(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1283 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1284 public static Int16 ToInt16(Single p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1285 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1286 public static Int16 ToInt16(String p) { return p == null? Configuration.NullableValues.Int16 : Int16.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1287 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1288 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1289 public static Int16 ToInt16(UInt16 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1290 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1291 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1292 public static Int16 ToInt16(UInt32 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1293 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1294 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1295 public static Int16 ToInt16(UInt64 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1296
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1297 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1298 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1299 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1300 public static Int16 ToInt16(Boolean? p) { return p.HasValue && p.Value ? (Int16)1: (Int16)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1301 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1302 public static Int16 ToInt16(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1303 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1304 public static Int16 ToInt16(Char? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1305 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1306 public static Int16 ToInt16(Decimal? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1307 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1308 public static Int16 ToInt16(Double? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1309 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1310 public static Int16 ToInt16(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1311 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1312 public static Int16 ToInt16(Int32? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1313 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1314 public static Int16 ToInt16(Int64? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1315 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1316 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1317 public static Int16 ToInt16(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1318 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1319 public static Int16 ToInt16(Single? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1320 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1321 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1322 public static Int16 ToInt16(UInt16? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1323 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1324 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1325 public static Int16 ToInt16(UInt32? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1326 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1327 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1328 public static Int16 ToInt16(UInt64? p) { return p.HasValue ? checked((Int16)p.Value) : Configuration.NullableValues.Int16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1329
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1330 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1331 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1332 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1333 public static Int16 ToInt16(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int16 : BitConverter.ToInt16(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1334 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1335 public static Int16 ToInt16(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int16 : BitConverter.ToInt16(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1336
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1337 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1338
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1339 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1340 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1341 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1342 public static Int16 ToInt16(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1343 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1344 public static Int16 ToInt16(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Int16 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1345 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1346 public static Int16 ToInt16(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1347 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1348 public static Int16 ToInt16(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1349 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1350 public static Int16 ToInt16(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Int16 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1351 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1352 public static Int16 ToInt16(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1353 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1354 public static Int16 ToInt16(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1355 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1356 public static Int16 ToInt16(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1357 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1358 public static Int16 ToInt16(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1359 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1360 public static Int16 ToInt16(SqlString p) { return p.IsNull ? Configuration.NullableValues.Int16 : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1361
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1362 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1363
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1364 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1365 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1366 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1367 public static Int16 ToInt16(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1368 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1369 if (p == null) return Configuration.NullableValues.Int16;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1370
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1371 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1372
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1373 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1374 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1375 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1376 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1377 case TypeCode.DBNull : return Configuration.NullableValues.Int16;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1378 case TypeCode.Int16 : return (Int16)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1379 case TypeCode.SByte : return ToInt16((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1380 case TypeCode.Byte : return ToInt16((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1381 case TypeCode.Int32 : return ToInt16((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1382 case TypeCode.Int64 : return ToInt16((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1383 case TypeCode.UInt16 : return ToInt16((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1384 case TypeCode.UInt32 : return ToInt16((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1385 case TypeCode.UInt64 : return ToInt16((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1386 case TypeCode.Single : return ToInt16((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1387 case TypeCode.Double : return ToInt16((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1388 case TypeCode.Decimal : return ToInt16((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1389 case TypeCode.Char : return ToInt16((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1390 case TypeCode.String : return ToInt16((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1391 case TypeCode.Boolean : return ToInt16((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1392 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1393
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1394 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1395 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1396 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1397 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1398 if (p is Boolean?) return ToInt16((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1399 if (p is Byte?) return ToInt16((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1400 if (p is Char?) return ToInt16((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1401 if (p is Decimal?) return ToInt16((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1402 if (p is Double?) return ToInt16((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1403 if (p is Int16?) return ToInt16((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1404 if (p is Int32?) return ToInt16((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1405 if (p is Int64?) return ToInt16((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1406 if (p is SByte?) return ToInt16((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1407 if (p is Single?) return ToInt16((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1408 if (p is UInt16?) return ToInt16((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1409 if (p is UInt32?) return ToInt16((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1410 if (p is UInt64?) return ToInt16((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1411 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1412
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1413 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1414 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1415 if (p is Binary) return ToInt16((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1416 if (p is Byte[]) return ToInt16((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1417
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1418 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1419
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1420 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1421 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1422 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1423 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1424 if (p is SqlBoolean) return ToInt16((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1425 if (p is SqlByte) return ToInt16((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1426 if (p is SqlDecimal) return ToInt16((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1427 if (p is SqlDouble) return ToInt16((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1428 if (p is SqlInt16) return ToInt16((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1429 if (p is SqlInt32) return ToInt16((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1430 if (p is SqlInt64) return ToInt16((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1431 if (p is SqlMoney) return ToInt16((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1432 if (p is SqlSingle) return ToInt16((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1433 if (p is SqlString) return ToInt16((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1434 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1435
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1436 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1437
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1438 if (p is IConvertible) return ((IConvertible)p).ToInt16(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1439
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1440 throw CreateInvalidCastException(p.GetType(), typeof(Int16));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1441 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1442
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1443 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1444
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1445 #region Int32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1446
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1447 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1448 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1449 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1450 public static Int32 ToInt32(Boolean p) { return p ? (Int32)1 : (Int32)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1451 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1452 public static Int32 ToInt32(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1453 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1454 public static Int32 ToInt32(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1455 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1456 public static Int32 ToInt32(Decimal p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1457 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1458 public static Int32 ToInt32(Double p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1459 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1460 public static Int32 ToInt32(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1461 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1462 public static Int32 ToInt32(Int64 p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1463 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1464 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1465 public static Int32 ToInt32(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1466 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1467 public static Int32 ToInt32(Single p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1468 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1469 public static Int32 ToInt32(String p) { return p == null? Configuration.NullableValues.Int32 : Int32.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1470 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1471 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1472 public static Int32 ToInt32(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1473 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1474 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1475 public static Int32 ToInt32(UInt32 p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1476 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1477 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1478 public static Int32 ToInt32(UInt64 p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1479
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1480 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1481 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1482 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1483 public static Int32 ToInt32(Boolean? p) { return p.HasValue && p.Value ? (Int32)1: (Int32)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1484 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1485 public static Int32 ToInt32(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1486 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1487 public static Int32 ToInt32(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1488 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1489 public static Int32 ToInt32(Decimal? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1490 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1491 public static Int32 ToInt32(Double? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1492 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1493 public static Int32 ToInt32(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1494 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1495 public static Int32 ToInt32(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1496 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1497 public static Int32 ToInt32(Int64? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1498 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1499 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1500 public static Int32 ToInt32(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1501 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1502 public static Int32 ToInt32(Single? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1503 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1504 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1505 public static Int32 ToInt32(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1506 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1507 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1508 public static Int32 ToInt32(UInt32? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1509 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1510 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1511 public static Int32 ToInt32(UInt64? p) { return p.HasValue ? checked((Int32)p.Value) : Configuration.NullableValues.Int32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1512
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1513 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1514 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1515 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1516 public static Int32 ToInt32(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int32 : BitConverter.ToInt32(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1517 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1518 public static Int32 ToInt32(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int32 : BitConverter.ToInt32(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1519
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1520 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1521
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1522 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1523 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1524 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1525 public static Int32 ToInt32(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1526 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1527 public static Int32 ToInt32(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Int32 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1528 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1529 public static Int32 ToInt32(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1530 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1531 public static Int32 ToInt32(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1532 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1533 public static Int32 ToInt32(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Int32 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1534 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1535 public static Int32 ToInt32(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Int32 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1536 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1537 public static Int32 ToInt32(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1538 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1539 public static Int32 ToInt32(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1540 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1541 public static Int32 ToInt32(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1542 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1543 public static Int32 ToInt32(SqlString p) { return p.IsNull ? Configuration.NullableValues.Int32 : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1544
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1545 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1546
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1547 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1548 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1549 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1550 public static Int32 ToInt32(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1551 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1552 if (p == null) return Configuration.NullableValues.Int32;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1553
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1554 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1555
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1556 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1557 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1558 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1559 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1560 case TypeCode.DBNull : return Configuration.NullableValues.Int32;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1561 case TypeCode.Int32 : return (Int32)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1562 case TypeCode.SByte : return ToInt32((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1563 case TypeCode.Int16 : return ToInt32((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1564 case TypeCode.Byte : return ToInt32((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1565 case TypeCode.UInt16 : return ToInt32((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1566 case TypeCode.Char : return ToInt32((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1567 case TypeCode.Int64 : return ToInt32((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1568 case TypeCode.UInt32 : return ToInt32((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1569 case TypeCode.UInt64 : return ToInt32((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1570 case TypeCode.Single : return ToInt32((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1571 case TypeCode.Double : return ToInt32((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1572 case TypeCode.Decimal : return ToInt32((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1573 case TypeCode.String : return ToInt32((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1574 case TypeCode.Boolean : return ToInt32((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1575 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1576
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1577 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1578 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1579 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1580 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1581 if (p is Boolean?) return ToInt32((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1582 if (p is Byte?) return ToInt32((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1583 if (p is Char?) return ToInt32((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1584 if (p is Decimal?) return ToInt32((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1585 if (p is Double?) return ToInt32((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1586 if (p is Int16?) return ToInt32((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1587 if (p is Int32?) return ToInt32((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1588 if (p is Int64?) return ToInt32((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1589 if (p is SByte?) return ToInt32((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1590 if (p is Single?) return ToInt32((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1591 if (p is UInt16?) return ToInt32((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1592 if (p is UInt32?) return ToInt32((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1593 if (p is UInt64?) return ToInt32((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1594 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1595
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1596 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1597 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1598 if (p is Binary) return ToInt32((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1599 if (p is Byte[]) return ToInt32((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1600
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1601 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1602
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1603 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1604 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1605 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1606 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1607 if (p is SqlBoolean) return ToInt32((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1608 if (p is SqlByte) return ToInt32((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1609 if (p is SqlDecimal) return ToInt32((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1610 if (p is SqlDouble) return ToInt32((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1611 if (p is SqlInt16) return ToInt32((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1612 if (p is SqlInt32) return ToInt32((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1613 if (p is SqlInt64) return ToInt32((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1614 if (p is SqlMoney) return ToInt32((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1615 if (p is SqlSingle) return ToInt32((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1616 if (p is SqlString) return ToInt32((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1617 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1618
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1619 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1620
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1621 if (p is IConvertible) return ((IConvertible)p).ToInt32(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1622
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1623 throw CreateInvalidCastException(p.GetType(), typeof(Int32));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1624 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1625
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1626 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1627
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1628 #region Int64
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1629
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1630 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1631 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1632 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1633 public static Int64 ToInt64(Boolean p) { return p ? (Int64)1 : (Int64)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1634 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1635 public static Int64 ToInt64(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1636 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1637 public static Int64 ToInt64(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1638 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1639 public static Int64 ToInt64(DateTime p) { return (p - DateTime.MinValue).Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1640 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1641 public static Int64 ToInt64(DateTimeOffset p) { return (p - DateTime.MinValue).Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1642 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1643 public static Int64 ToInt64(Decimal p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1644 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1645 public static Int64 ToInt64(Double p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1646 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1647 public static Int64 ToInt64(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1648 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1649 public static Int64 ToInt64(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1650 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1651 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1652 public static Int64 ToInt64(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1653 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1654 public static Int64 ToInt64(Single p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1655 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1656 public static Int64 ToInt64(String p) { return p == null? Configuration.NullableValues.Int64 : Int64.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1657 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1658 public static Int64 ToInt64(TimeSpan p) { return p.Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1659 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1660 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1661 public static Int64 ToInt64(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1662 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1663 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1664 public static Int64 ToInt64(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1665 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1666 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1667 public static Int64 ToInt64(UInt64 p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1668
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1669 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1670 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1671 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1672 public static Int64 ToInt64(Boolean? p) { return p.HasValue && p.Value ? (Int64)1: (Int64)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1673 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1674 public static Int64 ToInt64(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1675 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1676 public static Int64 ToInt64(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1677 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1678 public static Int64 ToInt64(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1679 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1680 public static Int64 ToInt64(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1681 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1682 public static Int64 ToInt64(Decimal? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1683 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1684 public static Int64 ToInt64(Double? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1685 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1686 public static Int64 ToInt64(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1687 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1688 public static Int64 ToInt64(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1689 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1690 public static Int64 ToInt64(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1691 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1692 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1693 public static Int64 ToInt64(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1694 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1695 public static Int64 ToInt64(Single? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1696 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1697 public static Int64 ToInt64(TimeSpan? p) { return p.HasValue ? p.Value.Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1698 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1699 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1700 public static Int64 ToInt64(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1701 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1702 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1703 public static Int64 ToInt64(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1704 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1705 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1706 public static Int64 ToInt64(UInt64? p) { return p.HasValue ? checked((Int64)p.Value) : Configuration.NullableValues.Int64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1707
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1708 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1709 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1710 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1711 public static Int64 ToInt64(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int64 : BitConverter.ToInt64(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1712 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1713 public static Int64 ToInt64(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Int64 : BitConverter.ToInt64(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1714
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1715 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1716
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1717 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1718 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1719 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1720 public static Int64 ToInt64(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1721 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1722 public static Int64 ToInt64(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1723 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1724 public static Int64 ToInt64(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1725 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1726 public static Int64 ToInt64(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1727 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1728 public static Int64 ToInt64(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1729 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1730 public static Int64 ToInt64(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1731 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1732 public static Int64 ToInt64(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1733 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1734 public static Int64 ToInt64(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Int64 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1735 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1736 public static Int64 ToInt64(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1737 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1738 public static Int64 ToInt64(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1739 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1740 public static Int64 ToInt64(SqlString p) { return p.IsNull ? Configuration.NullableValues.Int64 : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1741
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1742 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1743
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1744 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1745 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1746 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1747 public static Int64 ToInt64(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1748 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1749 if (p == null) return Configuration.NullableValues.Int64;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1750
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1751 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1752
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1753 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1754 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1755 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1756 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1757 case TypeCode.DBNull : return Configuration.NullableValues.Int64;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1758 case TypeCode.Int64 : return (Int64)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1759 case TypeCode.DateTime : return ToInt64((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1760 case TypeCode.SByte : return ToInt64((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1761 case TypeCode.Int16 : return ToInt64((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1762 case TypeCode.Int32 : return ToInt64((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1763 case TypeCode.Byte : return ToInt64((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1764 case TypeCode.UInt16 : return ToInt64((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1765 case TypeCode.UInt32 : return ToInt64((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1766 case TypeCode.Char : return ToInt64((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1767 case TypeCode.UInt64 : return ToInt64((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1768 case TypeCode.Single : return ToInt64((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1769 case TypeCode.Double : return ToInt64((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1770 case TypeCode.Decimal : return ToInt64((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1771 case TypeCode.String : return ToInt64((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1772 case TypeCode.Boolean : return ToInt64((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1773 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1774
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1775 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1776 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1777 if (p is DateTimeOffset) return ToInt64((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1778 if (p is TimeSpan) return ToInt64((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1779
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1780 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1781 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1782 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1783 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1784 if (p is Boolean?) return ToInt64((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1785 if (p is Byte?) return ToInt64((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1786 if (p is Char?) return ToInt64((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1787 if (p is DateTime?) return ToInt64((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1788 if (p is DateTimeOffset?) return ToInt64((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1789 if (p is Decimal?) return ToInt64((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1790 if (p is Double?) return ToInt64((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1791 if (p is Int16?) return ToInt64((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1792 if (p is Int32?) return ToInt64((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1793 if (p is Int64?) return ToInt64((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1794 if (p is SByte?) return ToInt64((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1795 if (p is Single?) return ToInt64((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1796 if (p is TimeSpan?) return ToInt64((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1797 if (p is UInt16?) return ToInt64((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1798 if (p is UInt32?) return ToInt64((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1799 if (p is UInt64?) return ToInt64((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1800 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1801
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1802 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1803 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1804 if (p is Binary) return ToInt64((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1805 if (p is Byte[]) return ToInt64((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1806
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1807 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1808
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1809 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1810 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1811 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1812 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1813 if (p is SqlBoolean) return ToInt64((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1814 if (p is SqlByte) return ToInt64((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1815 if (p is SqlDateTime) return ToInt64((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1816 if (p is SqlDecimal) return ToInt64((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1817 if (p is SqlDouble) return ToInt64((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1818 if (p is SqlInt16) return ToInt64((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1819 if (p is SqlInt32) return ToInt64((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1820 if (p is SqlInt64) return ToInt64((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1821 if (p is SqlMoney) return ToInt64((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1822 if (p is SqlSingle) return ToInt64((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1823 if (p is SqlString) return ToInt64((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1824 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1825
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1826 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1827
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1828 if (p is IConvertible) return ((IConvertible)p).ToInt64(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1829
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1830 throw CreateInvalidCastException(p.GetType(), typeof(Int64));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1831 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1832
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1833 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1834
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1835 #region SByte
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1836
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1837 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1838 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1839 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1840 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1841 public static SByte ToSByte(Boolean p) { return p ? (SByte)1 : (SByte)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1842 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1843 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1844 public static SByte ToSByte(Byte p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1845 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1846 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1847 public static SByte ToSByte(Char p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1848 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1849 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1850 public static SByte ToSByte(Decimal p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1851 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1852 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1853 public static SByte ToSByte(Double p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1854 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1855 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1856 public static SByte ToSByte(Int16 p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1857 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1858 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1859 public static SByte ToSByte(Int32 p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1860 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1861 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1862 public static SByte ToSByte(Int64 p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1863 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1864 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1865 public static SByte ToSByte(Single p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1866 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1867 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1868 public static SByte ToSByte(String p) { return p == null? Configuration.NullableValues.SByte : SByte.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1869 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1870 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1871 public static SByte ToSByte(UInt16 p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1872 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1873 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1874 public static SByte ToSByte(UInt32 p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1875 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1876 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1877 public static SByte ToSByte(UInt64 p) { return checked((SByte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1878
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1879 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1880 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1881 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1882 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1883 public static SByte ToSByte(Boolean? p) { return p.HasValue && p.Value ? (SByte)1: (SByte)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1884 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1885 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1886 public static SByte ToSByte(Byte? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1887 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1888 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1889 public static SByte ToSByte(Char? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1890 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1891 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1892 public static SByte ToSByte(Decimal? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1893 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1894 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1895 public static SByte ToSByte(Double? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1896 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1897 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1898 public static SByte ToSByte(Int16? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1899 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1900 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1901 public static SByte ToSByte(Int32? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1902 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1903 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1904 public static SByte ToSByte(Int64? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1905 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1906 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1907 public static SByte ToSByte(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1908 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1909 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1910 public static SByte ToSByte(Single? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1911 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1912 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1913 public static SByte ToSByte(UInt16? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1914 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1915 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1916 public static SByte ToSByte(UInt32? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1917 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1918 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1919 public static SByte ToSByte(UInt64? p) { return p.HasValue ? checked((SByte)p.Value) : Configuration.NullableValues.SByte; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1920
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1921 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1922 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1923 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1924 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1925 public static SByte ToSByte(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.SByte : checked((SByte)p.ToArray()[0]); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1926 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1927 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1928 public static SByte ToSByte(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.SByte : checked((SByte)p[0]); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1929
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1930 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1931
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1932 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1933 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1934 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1935 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1936 public static SByte ToSByte(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1937 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1938 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1939 public static SByte ToSByte(SqlByte p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1940 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1941 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1942 public static SByte ToSByte(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1943 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1944 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1945 public static SByte ToSByte(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1946 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1947 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1948 public static SByte ToSByte(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1949 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1950 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1951 public static SByte ToSByte(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1952 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1953 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1954 public static SByte ToSByte(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1955 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1956 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1957 public static SByte ToSByte(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1958 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1959 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1960 public static SByte ToSByte(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1961 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1962 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1963 public static SByte ToSByte(SqlString p) { return p.IsNull ? Configuration.NullableValues.SByte : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1964
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1965 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1966
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1967 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1968 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1969 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1970 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1971 public static SByte ToSByte(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1972 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1973 if (p == null) return Configuration.NullableValues.SByte;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1974
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1975 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1976
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1977 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1978 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1979 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1980 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1981 case TypeCode.DBNull : return Configuration.NullableValues.SByte;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1982 case TypeCode.SByte : return (SByte)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1983 case TypeCode.Int16 : return ToSByte((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1984 case TypeCode.Int32 : return ToSByte((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1985 case TypeCode.Int64 : return ToSByte((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1986 case TypeCode.Byte : return ToSByte((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1987 case TypeCode.UInt16 : return ToSByte((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1988 case TypeCode.UInt32 : return ToSByte((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1989 case TypeCode.UInt64 : return ToSByte((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1990 case TypeCode.Single : return ToSByte((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1991 case TypeCode.Double : return ToSByte((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1992 case TypeCode.Decimal : return ToSByte((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1993 case TypeCode.Char : return ToSByte((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1994 case TypeCode.String : return ToSByte((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1995 case TypeCode.Boolean : return ToSByte((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1996 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1997
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1998 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1999 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2000 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2001 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2002 if (p is Boolean?) return ToSByte((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2003 if (p is Byte?) return ToSByte((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2004 if (p is Char?) return ToSByte((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2005 if (p is Decimal?) return ToSByte((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2006 if (p is Double?) return ToSByte((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2007 if (p is Int16?) return ToSByte((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2008 if (p is Int32?) return ToSByte((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2009 if (p is Int64?) return ToSByte((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2010 if (p is SByte?) return ToSByte((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2011 if (p is Single?) return ToSByte((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2012 if (p is UInt16?) return ToSByte((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2013 if (p is UInt32?) return ToSByte((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2014 if (p is UInt64?) return ToSByte((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2015 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2016
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2017 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2018 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2019 if (p is Binary) return ToSByte((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2020 if (p is Byte[]) return ToSByte((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2021
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2022 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2023
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2024 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2025 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2026 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2027 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2028 if (p is SqlBoolean) return ToSByte((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2029 if (p is SqlByte) return ToSByte((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2030 if (p is SqlDecimal) return ToSByte((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2031 if (p is SqlDouble) return ToSByte((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2032 if (p is SqlInt16) return ToSByte((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2033 if (p is SqlInt32) return ToSByte((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2034 if (p is SqlInt64) return ToSByte((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2035 if (p is SqlMoney) return ToSByte((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2036 if (p is SqlSingle) return ToSByte((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2037 if (p is SqlString) return ToSByte((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2038 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2039
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2040 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2041
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2042 if (p is IConvertible) return ((IConvertible)p).ToSByte(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2043
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2044 throw CreateInvalidCastException(p.GetType(), typeof(SByte));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2045 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2046
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2047 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2048
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2049 #region Single
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2050
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2051 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2052 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2053 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2054 public static Single ToSingle(Boolean p) { return p ? (Single)1 : (Single)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2055 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2056 public static Single ToSingle(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2057 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2058 public static Single ToSingle(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2059 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2060 public static Single ToSingle(Decimal p) { return checked((Single)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2061 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2062 public static Single ToSingle(Double p) { return checked((Single)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2063 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2064 public static Single ToSingle(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2065 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2066 public static Single ToSingle(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2067 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2068 public static Single ToSingle(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2069 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2070 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2071 public static Single ToSingle(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2072 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2073 public static Single ToSingle(String p) { return p == null? Configuration.NullableValues.Single : Single.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2074 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2075 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2076 public static Single ToSingle(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2077 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2078 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2079 public static Single ToSingle(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2080 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2081 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2082 public static Single ToSingle(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2083
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2084 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2085 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2086 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2087 public static Single ToSingle(Boolean? p) { return p.HasValue && p.Value ? (Single)1: (Single)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2088 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2089 public static Single ToSingle(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2090 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2091 public static Single ToSingle(Char? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2092 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2093 public static Single ToSingle(Decimal? p) { return p.HasValue ? checked((Single)p.Value) : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2094 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2095 public static Single ToSingle(Double? p) { return p.HasValue ? checked((Single)p.Value) : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2096 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2097 public static Single ToSingle(Int16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2098 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2099 public static Single ToSingle(Int32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2100 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2101 public static Single ToSingle(Int64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2102 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2103 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2104 public static Single ToSingle(SByte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2105 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2106 public static Single ToSingle(Single? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2107 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2108 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2109 public static Single ToSingle(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2110 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2111 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2112 public static Single ToSingle(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2113 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2114 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2115 public static Single ToSingle(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.Single; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2116
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2117 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2118 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2119 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2120 public static Single ToSingle(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Single : BitConverter.ToSingle(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2121 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2122 public static Single ToSingle(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.Single : BitConverter.ToSingle(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2124 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2125
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2126 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2127 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2128 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2129 public static Single ToSingle(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2130 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2131 public static Single ToSingle(SqlByte p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2132 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2133 public static Single ToSingle(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2134 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2135 public static Single ToSingle(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2136 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2137 public static Single ToSingle(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2138 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2139 public static Single ToSingle(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2140 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2141 public static Single ToSingle(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2142 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2143 public static Single ToSingle(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2144 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2145 public static Single ToSingle(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.Single : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2146 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2147 public static Single ToSingle(SqlString p) { return p.IsNull ? Configuration.NullableValues.Single : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2148
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2149 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2150
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2151 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2152 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2153 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Single</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2154 public static Single ToSingle(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2155 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2156 if (p == null) return Configuration.NullableValues.Single;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2157
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2158 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2159
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2160 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2161 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2162 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2163 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2164 case TypeCode.DBNull : return Configuration.NullableValues.Single;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2165 case TypeCode.Single : return (Single)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2166 case TypeCode.SByte : return ToSingle((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2167 case TypeCode.Int16 : return ToSingle((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2168 case TypeCode.Int32 : return ToSingle((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2169 case TypeCode.Int64 : return ToSingle((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2170 case TypeCode.Byte : return ToSingle((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2171 case TypeCode.UInt16 : return ToSingle((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2172 case TypeCode.UInt32 : return ToSingle((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2173 case TypeCode.Char : return ToSingle((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2174 case TypeCode.UInt64 : return ToSingle((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2175 case TypeCode.Double : return ToSingle((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2176 case TypeCode.Decimal : return ToSingle((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2177 case TypeCode.String : return ToSingle((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2178 case TypeCode.Boolean : return ToSingle((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2179 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2180
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2181 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2182 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2183 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2184 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2185 if (p is Boolean?) return ToSingle((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2186 if (p is Byte?) return ToSingle((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2187 if (p is Char?) return ToSingle((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2188 if (p is Decimal?) return ToSingle((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2189 if (p is Double?) return ToSingle((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2190 if (p is Int16?) return ToSingle((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2191 if (p is Int32?) return ToSingle((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2192 if (p is Int64?) return ToSingle((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2193 if (p is SByte?) return ToSingle((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2194 if (p is Single?) return ToSingle((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2195 if (p is UInt16?) return ToSingle((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2196 if (p is UInt32?) return ToSingle((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2197 if (p is UInt64?) return ToSingle((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2198 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2199
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2200 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2201 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2202 if (p is Binary) return ToSingle((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2203 if (p is Byte[]) return ToSingle((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2204
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2205 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2206
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2207 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2208 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2209 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2210 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2211 if (p is SqlBoolean) return ToSingle((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2212 if (p is SqlByte) return ToSingle((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2213 if (p is SqlDecimal) return ToSingle((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2214 if (p is SqlDouble) return ToSingle((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2215 if (p is SqlInt16) return ToSingle((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2216 if (p is SqlInt32) return ToSingle((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2217 if (p is SqlInt64) return ToSingle((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2218 if (p is SqlMoney) return ToSingle((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2219 if (p is SqlSingle) return ToSingle((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2220 if (p is SqlString) return ToSingle((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2221 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2222
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2223 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2224
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2225 if (p is IConvertible) return ((IConvertible)p).ToSingle(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2226
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2227 throw CreateInvalidCastException(p.GetType(), typeof(Single));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2228 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2229
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2230 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2231
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2232 #region String
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2233
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2234 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2235 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2236 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2237 public static String ToString(Boolean p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2238 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2239 public static String ToString(Byte p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2240 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2241 public static String ToString(Char p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2242 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2243 public static String ToString(DateTime p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2244 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2245 public static String ToString(DateTimeOffset p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2246 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2247 public static String ToString(Decimal p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2248 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2249 public static String ToString(Double p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2250 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2251 public static String ToString(Guid p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2252 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2253 public static String ToString(Int16 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2254 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2255 public static String ToString(Int32 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2256 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2257 public static String ToString(Int64 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2258 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2259 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2260 public static String ToString(SByte p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2261 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2262 public static String ToString(Single p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2263 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2264 public static String ToString(TimeSpan p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2265 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2266 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2267 public static String ToString(UInt16 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2268 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2269 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2270 public static String ToString(UInt32 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2271 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2272 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2273 public static String ToString(UInt64 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2274
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2275 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2276 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2277 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2278 public static String ToString(Boolean? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2279 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2280 public static String ToString(Byte? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2281 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2282 public static String ToString(Char? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2283 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2284 public static String ToString(DateTime? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2285 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2286 public static String ToString(DateTimeOffset? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2287 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2288 public static String ToString(Decimal? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2289 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2290 public static String ToString(Double? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2291 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2292 public static String ToString(Guid? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2293 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2294 public static String ToString(Int16? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2295 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2296 public static String ToString(Int32? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2297 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2298 public static String ToString(Int64? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2299 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2300 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2301 public static String ToString(SByte? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2302 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2303 public static String ToString(Single? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2304 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2305 public static String ToString(TimeSpan? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2306 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2307 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2308 public static String ToString(UInt16? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2309 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2310 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2311 public static String ToString(UInt32? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2312 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2313 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2314 public static String ToString(UInt64? p) { return p.HasValue ? p.Value.ToString() : Configuration.NullableValues.String; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2315
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2316 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2317 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2318 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2319 public static String ToString(Binary p) { return ToString(p.ToArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2320 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2321 public static String ToString(Byte[] p) { return p == null ? Configuration.NullableValues.String : System.Text.Encoding.UTF8.GetString(p, 0, p.Length); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2322 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2323 public static String ToString(Type p) { return p == null ? Configuration.NullableValues.String : p.FullName; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2324
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2325 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2326
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2327 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2328 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2329 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2330 public static String ToString(SqlBoolean p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2331 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2332 public static String ToString(SqlByte p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2333 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2334 public static String ToString(SqlChars p) { return p.IsNull ? Configuration.NullableValues.String : p.ToSqlString().Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2335 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2336 public static String ToString(SqlDecimal p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2337 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2338 public static String ToString(SqlDouble p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2339 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2340 public static String ToString(SqlGuid p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2341 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2342 public static String ToString(SqlInt16 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2343 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2344 public static String ToString(SqlInt32 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2345 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2346 public static String ToString(SqlInt64 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2347 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2348 public static String ToString(SqlMoney p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2349 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2350 public static String ToString(SqlSingle p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2351 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2352 public static String ToString(SqlString p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2353 /// <summary>Converts the value from <c>SqlXml</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2354 public static String ToString(SqlXml p) { return p.IsNull ? Configuration.NullableValues.String : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2355
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2356 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2357 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2358 /// <summary>Converts the value from <c>XElement</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2359 public static String ToString(XElement p) { return p == null ? Configuration.NullableValues.String : p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2360 /// <summary>Converts the value from <c>XmlDocument</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2361 public static String ToString(XmlDocument p) { return p == null ? Configuration.NullableValues.String : p.InnerXml; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2362
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2363 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2364
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2365 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2366 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2367 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>String</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2368 public static String ToString(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2369 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2370 if (p == null) return Configuration.NullableValues.String;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2371
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2372 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2373
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2374 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2375 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2376 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2377 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2378 case TypeCode.DBNull : return Configuration.NullableValues.String;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2379 case TypeCode.String : return (String)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2380 case TypeCode.SByte : return ToString((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2381 case TypeCode.Int16 : return ToString((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2382 case TypeCode.Int32 : return ToString((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2383 case TypeCode.Int64 : return ToString((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2384 case TypeCode.Byte : return ToString((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2385 case TypeCode.UInt16 : return ToString((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2386 case TypeCode.UInt32 : return ToString((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2387 case TypeCode.UInt64 : return ToString((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2388 case TypeCode.Single : return ToString((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2389 case TypeCode.Double : return ToString((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2390 case TypeCode.Boolean : return ToString((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2391 case TypeCode.Decimal : return ToString((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2392 case TypeCode.Char : return ToString((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2393 case TypeCode.DateTime : return ToString((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2394 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2395
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2396 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2397 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2398 if (p is DateTimeOffset) return ToString((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2399 if (p is Guid) return ToString((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2400 if (p is TimeSpan) return ToString((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2401
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2402 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2403 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2404 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2405 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2406 if (p is Boolean?) return ToString((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2407 if (p is Byte?) return ToString((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2408 if (p is Char?) return ToString((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2409 if (p is DateTime?) return ToString((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2410 if (p is DateTimeOffset?) return ToString((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2411 if (p is Decimal?) return ToString((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2412 if (p is Double?) return ToString((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2413 if (p is Guid?) return ToString((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2414 if (p is Int16?) return ToString((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2415 if (p is Int32?) return ToString((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2416 if (p is Int64?) return ToString((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2417 if (p is SByte?) return ToString((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2418 if (p is Single?) return ToString((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2419 if (p is TimeSpan?) return ToString((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2420 if (p is UInt16?) return ToString((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2421 if (p is UInt32?) return ToString((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2422 if (p is UInt64?) return ToString((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2423 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2424
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2425 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2426 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2427 if (p is Binary) return ToString((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2428 if (p is Byte[]) return ToString((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2429 if (p is Type) return ToString((Type) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2430
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2431 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2432
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2433 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2434 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2435 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2436 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2437 if (p is SqlBoolean) return ToString((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2438 if (p is SqlByte) return ToString((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2439 if (p is SqlChars) return ToString((SqlChars) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2440 if (p is SqlDecimal) return ToString((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2441 if (p is SqlDouble) return ToString((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2442 if (p is SqlGuid) return ToString((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2443 if (p is SqlInt16) return ToString((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2444 if (p is SqlInt32) return ToString((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2445 if (p is SqlInt64) return ToString((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2446 if (p is SqlMoney) return ToString((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2447 if (p is SqlSingle) return ToString((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2448 if (p is SqlString) return ToString((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2449 if (p is SqlXml) return ToString((SqlXml) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2450 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2451
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2452 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2453 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2454 if (p is XElement) return ToString((XElement) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2455 if (p is XmlDocument) return ToString((XmlDocument) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2457 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2458
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2459 if (p is IConvertible) return ((IConvertible)p).ToString(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2460
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2461 return p.ToString();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2462 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2463
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2464 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2465
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2466 #region TimeSpan
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2467
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2468 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2469 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2470 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2471 public static TimeSpan ToTimeSpan(DateTime p) { return p - DateTime.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2472 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2473 public static TimeSpan ToTimeSpan(DateTimeOffset p) { return p - DateTimeOffset.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2474 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2475 public static TimeSpan ToTimeSpan(Double p) { return TimeSpan.FromDays (p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2476 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2477 public static TimeSpan ToTimeSpan(Int64 p) { return TimeSpan.FromTicks(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2478 /// <summary>Converts the value from <c>String</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2479 public static TimeSpan ToTimeSpan(String p) { return p == null? Configuration.NullableValues.TimeSpan : TimeSpan.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2480
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2481 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2482 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2483 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2484 public static TimeSpan ToTimeSpan(DateTime? p) { return p.HasValue ? p.Value - DateTime.MinValue : Configuration.NullableValues.TimeSpan; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2485 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2486 public static TimeSpan ToTimeSpan(DateTimeOffset? p) { return p.HasValue ? p.Value - DateTimeOffset.MinValue : Configuration.NullableValues.TimeSpan; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2487 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2488 public static TimeSpan ToTimeSpan(Double? p) { return p.HasValue ? TimeSpan.FromDays (p.Value) : Configuration.NullableValues.TimeSpan; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2489 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2490 public static TimeSpan ToTimeSpan(Int64? p) { return p.HasValue ? TimeSpan.FromTicks(p.Value) : Configuration.NullableValues.TimeSpan; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2491 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2492 public static TimeSpan ToTimeSpan(TimeSpan? p) { return p.HasValue ? p.Value : Configuration.NullableValues.TimeSpan; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2493
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2494 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2495 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2496 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2497 public static TimeSpan ToTimeSpan(Binary p) { return p == null || p.Length == 0? Configuration.NullableValues.TimeSpan : TimeSpan.FromTicks(ToInt64(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2498 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2499 public static TimeSpan ToTimeSpan(Byte[] p) { return p == null || p.Length == 0? Configuration.NullableValues.TimeSpan : TimeSpan.FromTicks(ToInt64(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2500
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2501 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2502
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2503 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2504 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2505 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2506 public static TimeSpan ToTimeSpan(SqlDateTime p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : p.Value - DateTime.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2507 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2508 public static TimeSpan ToTimeSpan(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : TimeSpan.FromDays(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2509 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2510 public static TimeSpan ToTimeSpan(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : TimeSpan.FromTicks(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2511 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2512 public static TimeSpan ToTimeSpan(SqlString p) { return p.IsNull ? Configuration.NullableValues.TimeSpan : TimeSpan.Parse(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2513
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2514 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2515
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2516 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2517 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2518 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>TimeSpan</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2519 public static TimeSpan ToTimeSpan(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2520 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2521 if (p == null) return Configuration.NullableValues.TimeSpan;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2522
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2523 if (p is TimeSpan) return (TimeSpan)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2524
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2525 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2526
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2527 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2528 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2529 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2530 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2531 case TypeCode.DBNull : return Configuration.NullableValues.TimeSpan;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2532 case TypeCode.DateTime : return ToTimeSpan((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2533 case TypeCode.Int64 : return ToTimeSpan((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2534 case TypeCode.Double : return ToTimeSpan((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2535 case TypeCode.String : return ToTimeSpan((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2536 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2537
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2538 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2539 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2540 if (p is DateTimeOffset) return ToTimeSpan((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2541
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2542 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2543 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2544 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2545 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2546 if (p is DateTime?) return ToTimeSpan((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2547 if (p is DateTimeOffset?) return ToTimeSpan((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2548 if (p is Double?) return ToTimeSpan((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2549 if (p is Int64?) return ToTimeSpan((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2550 if (p is TimeSpan?) return ToTimeSpan((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2551 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2552
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2553 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2554 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2555 if (p is Binary) return ToTimeSpan((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2556 if (p is Byte[]) return ToTimeSpan((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2557
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2558 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2559
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2560 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2561 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2562 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2563 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2564 if (p is SqlDateTime) return ToTimeSpan((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2565 if (p is SqlDouble) return ToTimeSpan((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2566 if (p is SqlInt64) return ToTimeSpan((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2567 if (p is SqlString) return ToTimeSpan((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2568 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2569
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2570 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2571
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2572 throw CreateInvalidCastException(p.GetType(), typeof(TimeSpan));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2573 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2574
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2575 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2576
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2577 #region UInt16
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2578
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2579 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2580 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2581 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2582 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2583 public static UInt16 ToUInt16(Boolean p) { return p ? (UInt16)1 : (UInt16)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2584 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2585 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2586 public static UInt16 ToUInt16(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2587 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2588 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2589 public static UInt16 ToUInt16(Char p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2590 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2591 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2592 public static UInt16 ToUInt16(Decimal p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2593 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2594 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2595 public static UInt16 ToUInt16(Double p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2596 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2597 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2598 public static UInt16 ToUInt16(Int16 p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2599 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2600 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2601 public static UInt16 ToUInt16(Int32 p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2602 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2603 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2604 public static UInt16 ToUInt16(Int64 p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2605 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2606 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2607 public static UInt16 ToUInt16(SByte p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2608 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2609 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2610 public static UInt16 ToUInt16(Single p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2611 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2612 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2613 public static UInt16 ToUInt16(String p) { return p == null? Configuration.NullableValues.UInt16 : UInt16.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2614 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2615 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2616 public static UInt16 ToUInt16(UInt32 p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2617 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2618 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2619 public static UInt16 ToUInt16(UInt64 p) { return checked((UInt16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2620
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2621 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2622 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2623 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2624 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2625 public static UInt16 ToUInt16(Boolean? p) { return p.HasValue && p.Value ? (UInt16)1: (UInt16)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2626 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2627 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2628 public static UInt16 ToUInt16(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2629 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2630 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2631 public static UInt16 ToUInt16(Char? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2632 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2633 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2634 public static UInt16 ToUInt16(Decimal? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2635 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2636 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2637 public static UInt16 ToUInt16(Double? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2638 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2639 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2640 public static UInt16 ToUInt16(Int16? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2641 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2642 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2643 public static UInt16 ToUInt16(Int32? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2644 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2645 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2646 public static UInt16 ToUInt16(Int64? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2647 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2648 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2649 public static UInt16 ToUInt16(SByte? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2650 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2651 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2652 public static UInt16 ToUInt16(Single? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2653 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2654 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2655 public static UInt16 ToUInt16(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2656 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2657 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2658 public static UInt16 ToUInt16(UInt32? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2659 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2660 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2661 public static UInt16 ToUInt16(UInt64? p) { return p.HasValue ? checked((UInt16)p.Value) : Configuration.NullableValues.UInt16; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2662
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2663 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2664 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2665 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2666 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2667 public static UInt16 ToUInt16(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt16 : BitConverter.ToUInt16(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2668 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2669 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2670 public static UInt16 ToUInt16(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt16 : BitConverter.ToUInt16(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2671
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2672 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2673
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2674 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2675 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2676 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2677 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2678 public static UInt16 ToUInt16(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2679 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2680 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2681 public static UInt16 ToUInt16(SqlByte p) { return p.IsNull ? Configuration.NullableValues.UInt16 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2682 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2683 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2684 public static UInt16 ToUInt16(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2685 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2686 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2687 public static UInt16 ToUInt16(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2688 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2689 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2690 public static UInt16 ToUInt16(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2691 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2692 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2693 public static UInt16 ToUInt16(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2694 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2695 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2696 public static UInt16 ToUInt16(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2697 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2698 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2699 public static UInt16 ToUInt16(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2700 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2701 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2702 public static UInt16 ToUInt16(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2703 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2704 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2705 public static UInt16 ToUInt16(SqlString p) { return p.IsNull ? Configuration.NullableValues.UInt16 : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2706
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2707 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2708
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2709 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2710 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2711 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2712 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2713 public static UInt16 ToUInt16(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2714 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2715 if (p == null) return Configuration.NullableValues.UInt16;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2716
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2717 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2718
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2719 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2720 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2721 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2722 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2723 case TypeCode.DBNull : return Configuration.NullableValues.UInt16;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2724 case TypeCode.UInt16 : return (UInt16)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2725 case TypeCode.Byte : return ToUInt16((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2726 case TypeCode.SByte : return ToUInt16((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2727 case TypeCode.Int16 : return ToUInt16((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2728 case TypeCode.Int32 : return ToUInt16((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2729 case TypeCode.Int64 : return ToUInt16((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2730 case TypeCode.UInt32 : return ToUInt16((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2731 case TypeCode.UInt64 : return ToUInt16((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2732 case TypeCode.Single : return ToUInt16((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2733 case TypeCode.Double : return ToUInt16((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2734 case TypeCode.Decimal : return ToUInt16((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2735 case TypeCode.Char : return ToUInt16((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2736 case TypeCode.String : return ToUInt16((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2737 case TypeCode.Boolean : return ToUInt16((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2738 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2739
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2740 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2741 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2742 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2743 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2744 if (p is Boolean?) return ToUInt16((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2745 if (p is Byte?) return ToUInt16((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2746 if (p is Char?) return ToUInt16((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2747 if (p is Decimal?) return ToUInt16((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2748 if (p is Double?) return ToUInt16((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2749 if (p is Int16?) return ToUInt16((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2750 if (p is Int32?) return ToUInt16((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2751 if (p is Int64?) return ToUInt16((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2752 if (p is SByte?) return ToUInt16((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2753 if (p is Single?) return ToUInt16((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2754 if (p is UInt16?) return ToUInt16((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2755 if (p is UInt32?) return ToUInt16((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2756 if (p is UInt64?) return ToUInt16((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2757 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2758
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2759 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2760 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2761 if (p is Binary) return ToUInt16((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2762 if (p is Byte[]) return ToUInt16((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2763
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2764 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2765
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2766 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2767 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2768 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2769 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2770 if (p is SqlBoolean) return ToUInt16((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2771 if (p is SqlByte) return ToUInt16((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2772 if (p is SqlDecimal) return ToUInt16((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2773 if (p is SqlDouble) return ToUInt16((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2774 if (p is SqlInt16) return ToUInt16((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2775 if (p is SqlInt32) return ToUInt16((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2776 if (p is SqlInt64) return ToUInt16((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2777 if (p is SqlMoney) return ToUInt16((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2778 if (p is SqlSingle) return ToUInt16((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2779 if (p is SqlString) return ToUInt16((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2780 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2781
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2782 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2783
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2784 if (p is IConvertible) return ((IConvertible)p).ToUInt16(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2785
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2786 throw CreateInvalidCastException(p.GetType(), typeof(UInt16));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2787 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2788
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2789 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2790
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2791 #region UInt32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2792
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2793 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2794 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2795 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2796 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2797 public static UInt32 ToUInt32(Boolean p) { return p ? (UInt32)1 : (UInt32)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2798 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2799 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2800 public static UInt32 ToUInt32(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2801 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2802 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2803 public static UInt32 ToUInt32(Char p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2804 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2805 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2806 public static UInt32 ToUInt32(Decimal p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2807 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2808 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2809 public static UInt32 ToUInt32(Double p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2810 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2811 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2812 public static UInt32 ToUInt32(Int16 p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2813 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2814 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2815 public static UInt32 ToUInt32(Int32 p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2816 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2817 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2818 public static UInt32 ToUInt32(Int64 p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2819 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2820 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2821 public static UInt32 ToUInt32(SByte p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2822 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2823 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2824 public static UInt32 ToUInt32(Single p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2825 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2826 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2827 public static UInt32 ToUInt32(String p) { return p == null? Configuration.NullableValues.UInt32 : UInt32.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2828 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2829 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2830 public static UInt32 ToUInt32(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2831 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2832 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2833 public static UInt32 ToUInt32(UInt64 p) { return checked((UInt32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2834
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2835 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2836 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2837 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2838 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2839 public static UInt32 ToUInt32(Boolean? p) { return p.HasValue && p.Value ? (UInt32)1: (UInt32)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2840 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2841 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2842 public static UInt32 ToUInt32(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2843 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2844 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2845 public static UInt32 ToUInt32(Char? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2846 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2847 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2848 public static UInt32 ToUInt32(Decimal? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2849 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2850 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2851 public static UInt32 ToUInt32(Double? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2852 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2853 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2854 public static UInt32 ToUInt32(Int16? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2855 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2856 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2857 public static UInt32 ToUInt32(Int32? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2858 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2859 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2860 public static UInt32 ToUInt32(Int64? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2861 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2862 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2863 public static UInt32 ToUInt32(SByte? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2864 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2865 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2866 public static UInt32 ToUInt32(Single? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2867 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2868 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2869 public static UInt32 ToUInt32(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2870 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2871 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2872 public static UInt32 ToUInt32(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2873 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2874 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2875 public static UInt32 ToUInt32(UInt64? p) { return p.HasValue ? checked((UInt32)p.Value) : Configuration.NullableValues.UInt32; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2876
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2877 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2878 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2879 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2880 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2881 public static UInt32 ToUInt32(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt32 : BitConverter.ToUInt32(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2882 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2883 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2884 public static UInt32 ToUInt32(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt32 : BitConverter.ToUInt32(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2885
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2886 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2887
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2888 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2889 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2890 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2891 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2892 public static UInt32 ToUInt32(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2893 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2894 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2895 public static UInt32 ToUInt32(SqlByte p) { return p.IsNull ? Configuration.NullableValues.UInt32 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2896 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2897 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2898 public static UInt32 ToUInt32(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2899 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2900 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2901 public static UInt32 ToUInt32(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2902 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2903 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2904 public static UInt32 ToUInt32(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2905 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2906 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2907 public static UInt32 ToUInt32(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2908 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2909 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2910 public static UInt32 ToUInt32(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2911 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2912 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2913 public static UInt32 ToUInt32(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2914 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2915 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2916 public static UInt32 ToUInt32(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2917 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2918 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2919 public static UInt32 ToUInt32(SqlString p) { return p.IsNull ? Configuration.NullableValues.UInt32 : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2920
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2921 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2922
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2923 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2924 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2925 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2926 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2927 public static UInt32 ToUInt32(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2928 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2929 if (p == null) return Configuration.NullableValues.UInt32;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2930
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2931 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2932
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2933 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2934 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2935 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2936 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2937 case TypeCode.DBNull : return Configuration.NullableValues.UInt32;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2938 case TypeCode.UInt32 : return (UInt32)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2939 case TypeCode.Byte : return ToUInt32((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2940 case TypeCode.UInt16 : return ToUInt32((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2941 case TypeCode.SByte : return ToUInt32((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2942 case TypeCode.Int16 : return ToUInt32((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2943 case TypeCode.Int32 : return ToUInt32((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2944 case TypeCode.Int64 : return ToUInt32((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2945 case TypeCode.UInt64 : return ToUInt32((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2946 case TypeCode.Single : return ToUInt32((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2947 case TypeCode.Double : return ToUInt32((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2948 case TypeCode.Decimal : return ToUInt32((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2949 case TypeCode.Char : return ToUInt32((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2950 case TypeCode.String : return ToUInt32((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2951 case TypeCode.Boolean : return ToUInt32((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2952 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2953
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2954 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2955 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2956 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2957 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2958 if (p is Boolean?) return ToUInt32((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2959 if (p is Byte?) return ToUInt32((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2960 if (p is Char?) return ToUInt32((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2961 if (p is Decimal?) return ToUInt32((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2962 if (p is Double?) return ToUInt32((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2963 if (p is Int16?) return ToUInt32((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2964 if (p is Int32?) return ToUInt32((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2965 if (p is Int64?) return ToUInt32((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2966 if (p is SByte?) return ToUInt32((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2967 if (p is Single?) return ToUInt32((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2968 if (p is UInt16?) return ToUInt32((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2969 if (p is UInt32?) return ToUInt32((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2970 if (p is UInt64?) return ToUInt32((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2971 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2972
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2973 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2974 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2975 if (p is Binary) return ToUInt32((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2976 if (p is Byte[]) return ToUInt32((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2977
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2978 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2979
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2980 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2981 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2982 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2983 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2984 if (p is SqlBoolean) return ToUInt32((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2985 if (p is SqlByte) return ToUInt32((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2986 if (p is SqlDecimal) return ToUInt32((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2987 if (p is SqlDouble) return ToUInt32((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2988 if (p is SqlInt16) return ToUInt32((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2989 if (p is SqlInt32) return ToUInt32((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2990 if (p is SqlInt64) return ToUInt32((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2991 if (p is SqlMoney) return ToUInt32((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2992 if (p is SqlSingle) return ToUInt32((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2993 if (p is SqlString) return ToUInt32((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2994 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2995
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2996 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2997
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2998 if (p is IConvertible) return ((IConvertible)p).ToUInt32(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2999
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3000 throw CreateInvalidCastException(p.GetType(), typeof(UInt32));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3001 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3002
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3003 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3004
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3005 #region UInt64
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3006
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3007 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3008 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3009 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3010 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3011 public static UInt64 ToUInt64(Boolean p) { return p ? (UInt64)1 : (UInt64)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3012 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3013 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3014 public static UInt64 ToUInt64(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3015 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3016 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3017 public static UInt64 ToUInt64(Char p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3018 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3019 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3020 public static UInt64 ToUInt64(Decimal p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3021 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3022 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3023 public static UInt64 ToUInt64(Double p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3024 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3025 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3026 public static UInt64 ToUInt64(Int16 p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3027 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3028 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3029 public static UInt64 ToUInt64(Int32 p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3030 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3031 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3032 public static UInt64 ToUInt64(Int64 p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3033 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3034 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3035 public static UInt64 ToUInt64(SByte p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3036 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3037 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3038 public static UInt64 ToUInt64(Single p) { return checked((UInt64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3039 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3040 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3041 public static UInt64 ToUInt64(String p) { return p == null? Configuration.NullableValues.UInt64 : UInt64.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3042 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3043 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3044 public static UInt64 ToUInt64(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3045 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3046 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3047 public static UInt64 ToUInt64(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3048
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3049 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3050 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3051 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3052 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3053 public static UInt64 ToUInt64(Boolean? p) { return p.HasValue && p.Value ? (UInt64)1: (UInt64)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3054 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3055 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3056 public static UInt64 ToUInt64(Byte? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3057 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3058 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3059 public static UInt64 ToUInt64(Char? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3060 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3061 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3062 public static UInt64 ToUInt64(Decimal? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3063 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3064 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3065 public static UInt64 ToUInt64(Double? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3066 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3067 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3068 public static UInt64 ToUInt64(Int16? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3069 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3070 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3071 public static UInt64 ToUInt64(Int32? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3072 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3073 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3074 public static UInt64 ToUInt64(Int64? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3075 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3076 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3077 public static UInt64 ToUInt64(SByte? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3078 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3079 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3080 public static UInt64 ToUInt64(Single? p) { return p.HasValue ? checked((UInt64)p.Value) : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3081 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3082 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3083 public static UInt64 ToUInt64(UInt16? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3084 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3085 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3086 public static UInt64 ToUInt64(UInt32? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3087 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3088 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3089 public static UInt64 ToUInt64(UInt64? p) { return p.HasValue ? p.Value : Configuration.NullableValues.UInt64; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3090
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3091 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3092 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3093 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3094 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3095 public static UInt64 ToUInt64(Binary p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt64 : BitConverter.ToUInt64(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3096 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3097 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3098 public static UInt64 ToUInt64(Byte[] p) { return p == null || p.Length == 0 ? Configuration.NullableValues.UInt64 : BitConverter.ToUInt64(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3099
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3100 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3102 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3103 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3104 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3105 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3106 public static UInt64 ToUInt64(SqlBoolean p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3107 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3108 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3109 public static UInt64 ToUInt64(SqlByte p) { return p.IsNull ? Configuration.NullableValues.UInt64 : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3110 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3111 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3112 public static UInt64 ToUInt64(SqlDecimal p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3113 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3114 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3115 public static UInt64 ToUInt64(SqlDouble p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3116 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3117 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3118 public static UInt64 ToUInt64(SqlInt16 p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3119 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3120 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3121 public static UInt64 ToUInt64(SqlInt32 p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3122 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3123 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3124 public static UInt64 ToUInt64(SqlInt64 p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3125 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3126 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3127 public static UInt64 ToUInt64(SqlMoney p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3128 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3129 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3130 public static UInt64 ToUInt64(SqlSingle p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3131 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3132 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3133 public static UInt64 ToUInt64(SqlString p) { return p.IsNull ? Configuration.NullableValues.UInt64 : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3134
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3135 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3136
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3137 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3138 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3139 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3140 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3141 public static UInt64 ToUInt64(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3142 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3143 if (p == null) return Configuration.NullableValues.UInt64;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3144
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3145 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3146
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3147 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3148 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3149 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3150 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3151 case TypeCode.DBNull : return Configuration.NullableValues.UInt64;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3152 case TypeCode.UInt64 : return (UInt64)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3153 case TypeCode.Byte : return ToUInt64((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3154 case TypeCode.UInt16 : return ToUInt64((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3155 case TypeCode.UInt32 : return ToUInt64((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3156 case TypeCode.SByte : return ToUInt64((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3157 case TypeCode.Int16 : return ToUInt64((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3158 case TypeCode.Int32 : return ToUInt64((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3159 case TypeCode.Int64 : return ToUInt64((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3160 case TypeCode.Single : return ToUInt64((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3161 case TypeCode.Double : return ToUInt64((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3162 case TypeCode.Decimal : return ToUInt64((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3163 case TypeCode.Char : return ToUInt64((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3164 case TypeCode.String : return ToUInt64((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3165 case TypeCode.Boolean : return ToUInt64((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3166 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3167
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3168 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3169 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3170 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3171 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3172 if (p is Boolean?) return ToUInt64((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3173 if (p is Byte?) return ToUInt64((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3174 if (p is Char?) return ToUInt64((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3175 if (p is Decimal?) return ToUInt64((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3176 if (p is Double?) return ToUInt64((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3177 if (p is Int16?) return ToUInt64((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3178 if (p is Int32?) return ToUInt64((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3179 if (p is Int64?) return ToUInt64((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3180 if (p is SByte?) return ToUInt64((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3181 if (p is Single?) return ToUInt64((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3182 if (p is UInt16?) return ToUInt64((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3183 if (p is UInt32?) return ToUInt64((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3184 if (p is UInt64?) return ToUInt64((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3185 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3186
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3187 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3188 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3189 if (p is Binary) return ToUInt64((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3190 if (p is Byte[]) return ToUInt64((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3191
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3192 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3193
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3194 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3195 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3196 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3197 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3198 if (p is SqlBoolean) return ToUInt64((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3199 if (p is SqlByte) return ToUInt64((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3200 if (p is SqlDecimal) return ToUInt64((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3201 if (p is SqlDouble) return ToUInt64((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3202 if (p is SqlInt16) return ToUInt64((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3203 if (p is SqlInt32) return ToUInt64((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3204 if (p is SqlInt64) return ToUInt64((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3205 if (p is SqlMoney) return ToUInt64((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3206 if (p is SqlSingle) return ToUInt64((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3207 if (p is SqlString) return ToUInt64((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3208 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3209
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3210 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3211
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3212 if (p is IConvertible) return ((IConvertible)p).ToUInt64(null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3213
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3214 throw CreateInvalidCastException(p.GetType(), typeof(UInt64));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3215 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3216
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3217 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3218
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3219 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3220
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3221 #region Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3222
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3223 #region Boolean?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3224
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3225 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3226 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3227 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3228 public static Boolean? ToNullableBoolean(Boolean p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3229 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3230 public static Boolean? ToNullableBoolean(Byte p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3231 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3232 public static Boolean? ToNullableBoolean(Char p) { return ToBoolean(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3233 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3234 public static Boolean? ToNullableBoolean(Decimal p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3235 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3236 public static Boolean? ToNullableBoolean(Double p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3237 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3238 public static Boolean? ToNullableBoolean(Int16 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3239 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3240 public static Boolean? ToNullableBoolean(Int32 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3241 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3242 public static Boolean? ToNullableBoolean(Int64 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3243 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3244 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3245 public static Boolean? ToNullableBoolean(SByte p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3246 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3247 public static Boolean? ToNullableBoolean(Single p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3248 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3249 public static Boolean? ToNullableBoolean(String p) { return p == null? (Boolean?)null : p.Length == 1 ? ToBoolean(p[0]) : Boolean.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3250 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3251 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3252 public static Boolean? ToNullableBoolean(UInt16 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3253 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3254 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3255 public static Boolean? ToNullableBoolean(UInt32 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3256 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3257 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3258 public static Boolean? ToNullableBoolean(UInt64 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3259
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3260 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3261 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3262 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3263 public static Boolean? ToNullableBoolean(Byte? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3264 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3265 public static Boolean? ToNullableBoolean(Char? p) { return p.HasValue && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3266 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3267 public static Boolean? ToNullableBoolean(Decimal? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3268 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3269 public static Boolean? ToNullableBoolean(Double? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3270 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3271 public static Boolean? ToNullableBoolean(Int16? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3272 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3273 public static Boolean? ToNullableBoolean(Int32? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3274 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3275 public static Boolean? ToNullableBoolean(Int64? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3276 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3277 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3278 public static Boolean? ToNullableBoolean(SByte? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3279 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3280 public static Boolean? ToNullableBoolean(Single? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3281 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3282 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3283 public static Boolean? ToNullableBoolean(UInt16? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3284 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3285 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3286 public static Boolean? ToNullableBoolean(UInt32? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3287 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3288 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3289 public static Boolean? ToNullableBoolean(UInt64? p) { return p.HasValue ? p.Value != 0 : (Boolean?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3290
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3291 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3292 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3293 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3294 public static Boolean? ToNullableBoolean(Binary p) { return p == null || p.Length == 0 ? (Boolean?)null : BitConverter.ToBoolean(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3295 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3296 public static Boolean? ToNullableBoolean(Byte[] p) { return p == null || p.Length == 0 ? (Boolean?)null : BitConverter.ToBoolean(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3297
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3298 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3299
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3300 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3301 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3302 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3303 public static Boolean? ToNullableBoolean(SqlBoolean p) { return p.IsNull ? (Boolean?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3304 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3305 public static Boolean? ToNullableBoolean(SqlByte p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3306 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3307 public static Boolean? ToNullableBoolean(SqlDecimal p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3308 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3309 public static Boolean? ToNullableBoolean(SqlDouble p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3310 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3311 public static Boolean? ToNullableBoolean(SqlInt16 p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3312 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3313 public static Boolean? ToNullableBoolean(SqlInt32 p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3314 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3315 public static Boolean? ToNullableBoolean(SqlInt64 p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3316 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3317 public static Boolean? ToNullableBoolean(SqlMoney p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3318 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3319 public static Boolean? ToNullableBoolean(SqlSingle p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3320 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3321 public static Boolean? ToNullableBoolean(SqlString p) { return p.IsNull ? (Boolean?)null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3322
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3323 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3324
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3325 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3326 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3327 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Boolean?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3328 public static Boolean? ToNullableBoolean(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3329 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3330 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3331
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3332 if (p is Boolean?) return (Boolean?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3333
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3334 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3335
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3336 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3337 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3338 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3339 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3340 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3341 case TypeCode.String : return ToNullableBoolean((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3342 case TypeCode.Boolean : return ToNullableBoolean((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3343 case TypeCode.Char : return ToNullableBoolean((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3344 case TypeCode.SByte : return ToNullableBoolean((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3345 case TypeCode.Int16 : return ToNullableBoolean((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3346 case TypeCode.Int32 : return ToNullableBoolean((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3347 case TypeCode.Int64 : return ToNullableBoolean((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3348 case TypeCode.Byte : return ToNullableBoolean((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3349 case TypeCode.UInt16 : return ToNullableBoolean((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3350 case TypeCode.UInt32 : return ToNullableBoolean((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3351 case TypeCode.UInt64 : return ToNullableBoolean((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3352 case TypeCode.Single : return ToNullableBoolean((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3353 case TypeCode.Double : return ToNullableBoolean((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3354 case TypeCode.Decimal : return ToNullableBoolean((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3355 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3356
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3357 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3358 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3359 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3360 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3361 if (p is Byte?) return ToNullableBoolean((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3362 if (p is Char?) return ToNullableBoolean((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3363 if (p is Decimal?) return ToNullableBoolean((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3364 if (p is Double?) return ToNullableBoolean((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3365 if (p is Int16?) return ToNullableBoolean((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3366 if (p is Int32?) return ToNullableBoolean((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3367 if (p is Int64?) return ToNullableBoolean((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3368 if (p is SByte?) return ToNullableBoolean((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3369 if (p is Single?) return ToNullableBoolean((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3370 if (p is UInt16?) return ToNullableBoolean((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3371 if (p is UInt32?) return ToNullableBoolean((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3372 if (p is UInt64?) return ToNullableBoolean((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3373 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3374
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3375 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3376 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3377 if (p is Binary) return ToNullableBoolean((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3378 if (p is Byte[]) return ToNullableBoolean((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3379
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3380 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3381
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3382 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3383 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3384 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3385 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3386 if (p is SqlBoolean) return ToNullableBoolean((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3387 if (p is SqlByte) return ToNullableBoolean((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3388 if (p is SqlDecimal) return ToNullableBoolean((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3389 if (p is SqlDouble) return ToNullableBoolean((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3390 if (p is SqlInt16) return ToNullableBoolean((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3391 if (p is SqlInt32) return ToNullableBoolean((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3392 if (p is SqlInt64) return ToNullableBoolean((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3393 if (p is SqlMoney) return ToNullableBoolean((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3394 if (p is SqlSingle) return ToNullableBoolean((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3395 if (p is SqlString) return ToNullableBoolean((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3396 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3397
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3398 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3399
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3400 throw CreateInvalidCastException(p.GetType(), typeof(Boolean?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3401 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3402
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3403 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3404
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3405 #region Byte?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3406
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3407 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3408 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3409 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3410 public static Byte? ToNullableByte(Boolean p) { return p ? (Byte?)1 : (Byte?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3411 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3412 public static Byte? ToNullableByte(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3413 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3414 public static Byte? ToNullableByte(Char p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3415 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3416 public static Byte? ToNullableByte(Decimal p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3417 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3418 public static Byte? ToNullableByte(Double p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3419 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3420 public static Byte? ToNullableByte(Int16 p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3421 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3422 public static Byte? ToNullableByte(Int32 p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3423 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3424 public static Byte? ToNullableByte(Int64 p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3425 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3426 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3427 public static Byte? ToNullableByte(SByte p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3428 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3429 public static Byte? ToNullableByte(Single p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3430 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3431 public static Byte? ToNullableByte(String p) { return p == null? (Byte?)null : Byte.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3432 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3433 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3434 public static Byte? ToNullableByte(UInt16 p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3435 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3436 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3437 public static Byte? ToNullableByte(UInt32 p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3438 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3439 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3440 public static Byte? ToNullableByte(UInt64 p) { return checked((Byte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3441
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3442 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3443 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3444 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3445 public static Byte? ToNullableByte(Boolean? p) { return p.HasValue && p.Value ? (Byte?)1: (Byte?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3446 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3447 public static Byte? ToNullableByte(Char? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3448 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3449 public static Byte? ToNullableByte(Decimal? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3450 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3451 public static Byte? ToNullableByte(Double? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3452 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3453 public static Byte? ToNullableByte(Int16? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3454 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3455 public static Byte? ToNullableByte(Int32? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3456 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3457 public static Byte? ToNullableByte(Int64? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3458 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3459 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3460 public static Byte? ToNullableByte(SByte? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3461 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3462 public static Byte? ToNullableByte(Single? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3463 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3464 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3465 public static Byte? ToNullableByte(UInt16? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3466 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3467 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3468 public static Byte? ToNullableByte(UInt32? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3469 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3470 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3471 public static Byte? ToNullableByte(UInt64? p) { return p.HasValue ? checked((Byte?)p.Value) : (Byte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3472
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3473 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3474 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3475 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3476 public static Byte? ToNullableByte(Binary p) { return p == null || p.Length == 0 ? (Byte?)null : p.ToArray()[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3477 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3478 public static Byte? ToNullableByte(Byte[] p) { return p == null || p.Length == 0 ? (Byte?)null : p[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3479
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3480 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3481
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3482 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3483 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3484 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3485 public static Byte? ToNullableByte(SqlBoolean p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3486 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3487 public static Byte? ToNullableByte(SqlByte p) { return p.IsNull ? (Byte?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3488 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3489 public static Byte? ToNullableByte(SqlDecimal p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3490 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3491 public static Byte? ToNullableByte(SqlDouble p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3492 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3493 public static Byte? ToNullableByte(SqlInt16 p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3494 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3495 public static Byte? ToNullableByte(SqlInt32 p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3496 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3497 public static Byte? ToNullableByte(SqlInt64 p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3498 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3499 public static Byte? ToNullableByte(SqlMoney p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3500 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3501 public static Byte? ToNullableByte(SqlSingle p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3502 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3503 public static Byte? ToNullableByte(SqlString p) { return p.IsNull ? (Byte?)null : ToByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3504
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3505 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3506
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3507 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3508 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3509 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Byte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3510 public static Byte? ToNullableByte(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3511 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3512 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3513
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3514 if (p is Byte?) return (Byte?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3515
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3516 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3517
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3518 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3519 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3520 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3521 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3522 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3523 case TypeCode.Byte : return ToNullableByte((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3524 case TypeCode.SByte : return ToNullableByte((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3525 case TypeCode.Int16 : return ToNullableByte((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3526 case TypeCode.Int32 : return ToNullableByte((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3527 case TypeCode.Int64 : return ToNullableByte((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3528 case TypeCode.UInt16 : return ToNullableByte((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3529 case TypeCode.UInt32 : return ToNullableByte((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3530 case TypeCode.UInt64 : return ToNullableByte((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3531 case TypeCode.Single : return ToNullableByte((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3532 case TypeCode.Double : return ToNullableByte((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3533 case TypeCode.Decimal : return ToNullableByte((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3534 case TypeCode.Char : return ToNullableByte((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3535 case TypeCode.String : return ToNullableByte((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3536 case TypeCode.Boolean : return ToNullableByte((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3537 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3538
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3539 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3540 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3541 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3542 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3543 if (p is Boolean?) return ToNullableByte((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3544 if (p is Char?) return ToNullableByte((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3545 if (p is Decimal?) return ToNullableByte((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3546 if (p is Double?) return ToNullableByte((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3547 if (p is Int16?) return ToNullableByte((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3548 if (p is Int32?) return ToNullableByte((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3549 if (p is Int64?) return ToNullableByte((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3550 if (p is SByte?) return ToNullableByte((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3551 if (p is Single?) return ToNullableByte((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3552 if (p is UInt16?) return ToNullableByte((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3553 if (p is UInt32?) return ToNullableByte((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3554 if (p is UInt64?) return ToNullableByte((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3555 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3556
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3557 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3558 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3559 if (p is Binary) return ToNullableByte((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3560 if (p is Byte[]) return ToNullableByte((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3561
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3562 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3563
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3564 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3565 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3566 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3567 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3568 if (p is SqlBoolean) return ToNullableByte((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3569 if (p is SqlByte) return ToNullableByte((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3570 if (p is SqlDecimal) return ToNullableByte((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3571 if (p is SqlDouble) return ToNullableByte((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3572 if (p is SqlInt16) return ToNullableByte((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3573 if (p is SqlInt32) return ToNullableByte((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3574 if (p is SqlInt64) return ToNullableByte((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3575 if (p is SqlMoney) return ToNullableByte((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3576 if (p is SqlSingle) return ToNullableByte((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3577 if (p is SqlString) return ToNullableByte((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3578 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3579
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3580 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3581
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3582 throw CreateInvalidCastException(p.GetType(), typeof(Byte?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3583 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3584
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3585 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3586
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3587 #region Char?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3588
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3589 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3590 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3591 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3592 public static Char? ToNullableChar(Boolean p) { return p ? (Char?)1 : (Char?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3593 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3594 public static Char? ToNullableChar(Byte p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3595 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3596 public static Char? ToNullableChar(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3597 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3598 public static Char? ToNullableChar(Decimal p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3599 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3600 public static Char? ToNullableChar(Double p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3601 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3602 public static Char? ToNullableChar(Int16 p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3603 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3604 public static Char? ToNullableChar(Int32 p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3605 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3606 public static Char? ToNullableChar(Int64 p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3607 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3608 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3609 public static Char? ToNullableChar(SByte p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3610 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3611 public static Char? ToNullableChar(Single p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3612 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3613 public static Char? ToNullableChar(String p) { return string.IsNullOrEmpty(p)? (Char?)0 : p[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3614 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3615 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3616 public static Char? ToNullableChar(UInt16 p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3617 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3618 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3619 public static Char? ToNullableChar(UInt32 p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3620 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3621 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3622 public static Char? ToNullableChar(UInt64 p) { return checked((Char?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3623
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3624 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3625 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3626 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3627 public static Char? ToNullableChar(Boolean? p) { return p.HasValue && p.Value ? (Char?)1: (Char?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3628 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3629 public static Char? ToNullableChar(Byte? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3630 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3631 public static Char? ToNullableChar(Decimal? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3632 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3633 public static Char? ToNullableChar(Double? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3634 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3635 public static Char? ToNullableChar(Int16? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3636 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3637 public static Char? ToNullableChar(Int32? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3638 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3639 public static Char? ToNullableChar(Int64? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3640 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3641 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3642 public static Char? ToNullableChar(SByte? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3643 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3644 public static Char? ToNullableChar(Single? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3645 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3646 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3647 public static Char? ToNullableChar(UInt16? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3648 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3649 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3650 public static Char? ToNullableChar(UInt32? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3651 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3652 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3653 public static Char? ToNullableChar(UInt64? p) { return p.HasValue ? checked((Char?)p.Value) : (Char?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3654
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3655 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3656 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3657 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3658 public static Char? ToNullableChar(Binary p) { return p == null || p.Length == 0 ? (Char?)null : BitConverter.ToChar(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3659 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3660 public static Char? ToNullableChar(Byte[] p) { return p == null || p.Length == 0 ? (Char?)null : BitConverter.ToChar(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3661
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3662 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3663
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3664 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3665 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3666 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3667 public static Char? ToNullableChar(SqlBoolean p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3668 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3669 public static Char? ToNullableChar(SqlByte p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3670 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3671 public static Char? ToNullableChar(SqlDecimal p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3672 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3673 public static Char? ToNullableChar(SqlDouble p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3674 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3675 public static Char? ToNullableChar(SqlInt16 p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3676 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3677 public static Char? ToNullableChar(SqlInt32 p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3678 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3679 public static Char? ToNullableChar(SqlInt64 p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3680 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3681 public static Char? ToNullableChar(SqlMoney p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3682 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3683 public static Char? ToNullableChar(SqlSingle p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3684 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3685 public static Char? ToNullableChar(SqlString p) { return p.IsNull ? (Char?)null : ToChar(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3686
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3687 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3688
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3689 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3690 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3691 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Char?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3692 public static Char? ToNullableChar(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3693 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3694 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3695
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3696 if (p is Char?) return (Char?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3697
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3698 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3699
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3700 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3701 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3702 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3703 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3704 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3705 case TypeCode.Char : return ToNullableChar((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3706 case TypeCode.SByte : return ToNullableChar((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3707 case TypeCode.Int16 : return ToNullableChar((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3708 case TypeCode.Int32 : return ToNullableChar((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3709 case TypeCode.Int64 : return ToNullableChar((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3710 case TypeCode.Byte : return ToNullableChar((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3711 case TypeCode.UInt16 : return ToNullableChar((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3712 case TypeCode.UInt32 : return ToNullableChar((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3713 case TypeCode.UInt64 : return ToNullableChar((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3714 case TypeCode.Single : return ToNullableChar((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3715 case TypeCode.Double : return ToNullableChar((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3716 case TypeCode.Decimal : return ToNullableChar((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3717 case TypeCode.String : return ToNullableChar((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3718 case TypeCode.Boolean : return ToNullableChar((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3719 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3720
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3721 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3722 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3723 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3724 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3725 if (p is Boolean?) return ToNullableChar((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3726 if (p is Byte?) return ToNullableChar((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3727 if (p is Decimal?) return ToNullableChar((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3728 if (p is Double?) return ToNullableChar((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3729 if (p is Int16?) return ToNullableChar((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3730 if (p is Int32?) return ToNullableChar((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3731 if (p is Int64?) return ToNullableChar((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3732 if (p is SByte?) return ToNullableChar((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3733 if (p is Single?) return ToNullableChar((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3734 if (p is UInt16?) return ToNullableChar((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3735 if (p is UInt32?) return ToNullableChar((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3736 if (p is UInt64?) return ToNullableChar((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3737 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3738
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3739 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3740 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3741 if (p is Binary) return ToNullableChar((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3742 if (p is Byte[]) return ToNullableChar((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3743
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3744 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3745
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3746 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3747 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3748 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3749 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3750 if (p is SqlBoolean) return ToNullableChar((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3751 if (p is SqlByte) return ToNullableChar((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3752 if (p is SqlDecimal) return ToNullableChar((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3753 if (p is SqlDouble) return ToNullableChar((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3754 if (p is SqlInt16) return ToNullableChar((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3755 if (p is SqlInt32) return ToNullableChar((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3756 if (p is SqlInt64) return ToNullableChar((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3757 if (p is SqlMoney) return ToNullableChar((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3758 if (p is SqlSingle) return ToNullableChar((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3759 if (p is SqlString) return ToNullableChar((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3760 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3761
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3762 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3763
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3764 throw CreateInvalidCastException(p.GetType(), typeof(Char?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3765 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3766
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3767 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3768
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3769 #region DateTime?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3770
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3771 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3772 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3773 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3774 public static DateTime? ToNullableDateTime(DateTime p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3775 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3776 public static DateTime? ToNullableDateTime(DateTimeOffset p) { return p.LocalDateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3777 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3778 public static DateTime? ToNullableDateTime(Double p) { return DateTime.MinValue + TimeSpan.FromDays (p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3779 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3780 public static DateTime? ToNullableDateTime(Int64 p) { return DateTime.MinValue + TimeSpan.FromTicks(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3781 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3782 public static DateTime? ToNullableDateTime(String p) { return p == null ? (DateTime?)null : DateTime.Parse(p, null, DateTimeStyles.NoCurrentDateDefault); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3783 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3784 public static DateTime? ToNullableDateTime(TimeSpan p) { return DateTime.MinValue + p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3785
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3786 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3787 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3788 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3789 public static DateTime? ToNullableDateTime(DateTimeOffset? p) { return p.HasValue ? p.Value.LocalDateTime : (DateTime?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3790 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3791 public static DateTime? ToNullableDateTime(Double? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromDays (p.Value): (DateTime?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3792 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3793 public static DateTime? ToNullableDateTime(Int64? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromTicks(p.Value): (DateTime?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3794 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3795 public static DateTime? ToNullableDateTime(TimeSpan? p) { return p.HasValue ? DateTime.MinValue + p.Value : (DateTime?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3796
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3797 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3798 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3799 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3800 public static DateTime? ToNullableDateTime(Binary p) { return p == null || p.Length == 0 ? (DateTime?)null : DateTime.FromBinary(ToInt64(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3801 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3802 public static DateTime? ToNullableDateTime(Byte[] p) { return p == null || p.Length == 0 ? (DateTime?)null : DateTime.FromBinary(ToInt64(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3803
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3804 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3805
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3806 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3807 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3808 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3809 public static DateTime? ToNullableDateTime(SqlDateTime p) { return p.IsNull ? (DateTime?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3810 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3811 public static DateTime? ToNullableDateTime(SqlDouble p) { return p.IsNull ? (DateTime?)null : DateTime.MinValue + TimeSpan.FromDays (p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3812 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3813 public static DateTime? ToNullableDateTime(SqlInt64 p) { return p.IsNull ? (DateTime?)null : DateTime.MinValue + TimeSpan.FromTicks(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3814 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3815 public static DateTime? ToNullableDateTime(SqlString p) { return p.IsNull ? (DateTime?)null : ToDateTime(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3816
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3817 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3818
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3819 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3820 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3821 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTime?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3822 public static DateTime? ToNullableDateTime(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3823 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3824 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3825
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3826 if (p is DateTime?) return (DateTime?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3827
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3828 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3829
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3830 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3831 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3832 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3833 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3834 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3835 case TypeCode.DateTime : return ToNullableDateTime((DateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3836 case TypeCode.String : return ToNullableDateTime((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3837 case TypeCode.Int64 : return ToNullableDateTime((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3838 case TypeCode.Double : return ToNullableDateTime((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3839 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3840
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3841 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3842 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3843 if (p is DateTimeOffset) return ToNullableDateTime((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3844 if (p is TimeSpan) return ToNullableDateTime((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3845
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3846 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3847 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3848 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3849 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3850 if (p is DateTimeOffset?) return ToNullableDateTime((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3851 if (p is Double?) return ToNullableDateTime((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3852 if (p is Int64?) return ToNullableDateTime((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3853 if (p is TimeSpan?) return ToNullableDateTime((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3854 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3855
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3856 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3857 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3858 if (p is Binary) return ToNullableDateTime((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3859 if (p is Byte[]) return ToNullableDateTime((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3860
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3861 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3862
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3863 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3864 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3865 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3866 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3867 if (p is SqlDateTime) return ToNullableDateTime((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3868 if (p is SqlDouble) return ToNullableDateTime((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3869 if (p is SqlInt64) return ToNullableDateTime((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3870 if (p is SqlString) return ToNullableDateTime((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3871 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3872
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3873 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3874
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3875 throw CreateInvalidCastException(p.GetType(), typeof(DateTime?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3876 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3877
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3878 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3879
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3880 #region DateTimeOffset?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3881
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3882 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3883 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3884 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3885 public static DateTimeOffset? ToNullableDateTimeOffset(DateTime p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3886 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3887 public static DateTimeOffset? ToNullableDateTimeOffset(DateTimeOffset p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3888 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3889 public static DateTimeOffset? ToNullableDateTimeOffset(Double p) { return DateTimeOffset.MinValue + TimeSpan.FromDays (p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3890 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3891 public static DateTimeOffset? ToNullableDateTimeOffset(Int64 p) { return DateTimeOffset.MinValue + TimeSpan.FromTicks(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3892 /// <summary>Converts the value from <c>String</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3893 public static DateTimeOffset? ToNullableDateTimeOffset(String p) { return p == null? (DateTimeOffset?)null : DateTimeOffset.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3894 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3895 public static DateTimeOffset? ToNullableDateTimeOffset(TimeSpan p) { return DateTimeOffset.MinValue + p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3896
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3897 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3898 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3899 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3900 public static DateTimeOffset? ToNullableDateTimeOffset(DateTime? p) { return p.HasValue ? p.Value : (DateTimeOffset?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3901 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3902 public static DateTimeOffset? ToNullableDateTimeOffset(Double? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value): (DateTimeOffset?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3903 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3904 public static DateTimeOffset? ToNullableDateTimeOffset(Int64? p) { return p.HasValue ? DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value): (DateTimeOffset?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3905 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3906 public static DateTimeOffset? ToNullableDateTimeOffset(TimeSpan? p) { return p.HasValue ? DateTimeOffset.MinValue + p.Value : (DateTimeOffset?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3907
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3908 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3909 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3910 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3911 public static DateTimeOffset? ToNullableDateTimeOffset(Binary p) { return p == null || p.Length == 0 ? (DateTimeOffset?)null : new DateTimeOffset?(ToDateTime(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3912 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3913 public static DateTimeOffset? ToNullableDateTimeOffset(Byte[] p) { return p == null || p.Length == 0 ? (DateTimeOffset?)null : new DateTimeOffset?(ToDateTime(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3914
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3915 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3916
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3917 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3918 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3919 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3920 public static DateTimeOffset? ToNullableDateTimeOffset(SqlDateTime p) { return p.IsNull ? (DateTimeOffset?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3921 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3922 public static DateTimeOffset? ToNullableDateTimeOffset(SqlDouble p) { return p.IsNull ? (DateTimeOffset?)null : DateTimeOffset.MinValue + TimeSpan.FromDays (p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3923 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3924 public static DateTimeOffset? ToNullableDateTimeOffset(SqlInt64 p) { return p.IsNull ? (DateTimeOffset?)null : DateTimeOffset.MinValue + TimeSpan.FromTicks(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3925 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3926 public static DateTimeOffset? ToNullableDateTimeOffset(SqlString p) { return p.IsNull ? (DateTimeOffset?)null : ToDateTimeOffset(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3927
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3928 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3929
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3930 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3931 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3932 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>DateTimeOffset?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3933 public static DateTimeOffset? ToNullableDateTimeOffset(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3934 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3935 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3936
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3937 if (p is DateTimeOffset?) return (DateTimeOffset?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3938
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3939 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3940
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3941 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3942 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3943 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3944 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3945 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3946 case TypeCode.Int64 : return ToNullableDateTimeOffset((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3947 case TypeCode.Double : return ToNullableDateTimeOffset((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3948 case TypeCode.DateTime : return ToNullableDateTimeOffset((DateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3949 case TypeCode.String : return ToNullableDateTimeOffset((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3950 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3951
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3952 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3953 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3954 if (p is DateTimeOffset) return ToNullableDateTimeOffset((DateTimeOffset)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3955 if (p is TimeSpan) return ToNullableDateTimeOffset((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3956
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3957 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3958 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3959 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3960 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3961 if (p is DateTime?) return ToNullableDateTimeOffset((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3962 if (p is Double?) return ToNullableDateTimeOffset((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3963 if (p is Int64?) return ToNullableDateTimeOffset((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3964 if (p is TimeSpan?) return ToNullableDateTimeOffset((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3965 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3966
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3967 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3968 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3969 if (p is Binary) return ToNullableDateTimeOffset((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3970 if (p is Byte[]) return ToNullableDateTimeOffset((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3971
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3972 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3973
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3974 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3975 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3976 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3977 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3978 if (p is SqlDateTime) return ToNullableDateTimeOffset((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3979 if (p is SqlDouble) return ToNullableDateTimeOffset((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3980 if (p is SqlInt64) return ToNullableDateTimeOffset((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3981 if (p is SqlString) return ToNullableDateTimeOffset((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3982 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3983
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3984 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3985
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3986 throw CreateInvalidCastException(p.GetType(), typeof(DateTimeOffset?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3987 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3988
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3989 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3990
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3991 #region Decimal?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3992
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3993 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3994 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3995 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3996 public static Decimal? ToNullableDecimal(Boolean p) { return p ? (Decimal?)1 : (Decimal?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3997 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3998 public static Decimal? ToNullableDecimal(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3999 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4000 public static Decimal? ToNullableDecimal(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4001 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4002 public static Decimal? ToNullableDecimal(Decimal p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4003 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4004 public static Decimal? ToNullableDecimal(Double p) { return checked((Decimal?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4005 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4006 public static Decimal? ToNullableDecimal(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4007 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4008 public static Decimal? ToNullableDecimal(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4009 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4010 public static Decimal? ToNullableDecimal(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4011 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4012 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4013 public static Decimal? ToNullableDecimal(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4014 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4015 public static Decimal? ToNullableDecimal(Single p) { return checked((Decimal?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4016 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4017 public static Decimal? ToNullableDecimal(String p) { return p == null? (Decimal?)null : Decimal.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4018 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4019 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4020 public static Decimal? ToNullableDecimal(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4021 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4022 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4023 public static Decimal? ToNullableDecimal(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4024 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4025 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4026 public static Decimal? ToNullableDecimal(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4027
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4028 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4029 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4030 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4031 public static Decimal? ToNullableDecimal(Boolean? p) { return p.HasValue && p.Value ? (Decimal?)1: (Decimal?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4032 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4033 public static Decimal? ToNullableDecimal(Byte? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4034 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4035 public static Decimal? ToNullableDecimal(Char? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4036 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4037 public static Decimal? ToNullableDecimal(Double? p) { return p.HasValue ? checked((Decimal?)p.Value) : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4038 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4039 public static Decimal? ToNullableDecimal(Int16? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4040 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4041 public static Decimal? ToNullableDecimal(Int32? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4042 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4043 public static Decimal? ToNullableDecimal(Int64? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4044 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4045 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4046 public static Decimal? ToNullableDecimal(SByte? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4047 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4048 public static Decimal? ToNullableDecimal(Single? p) { return p.HasValue ? checked((Decimal?)p.Value) : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4049 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4050 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4051 public static Decimal? ToNullableDecimal(UInt16? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4052 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4053 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4054 public static Decimal? ToNullableDecimal(UInt32? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4055 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4056 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4057 public static Decimal? ToNullableDecimal(UInt64? p) { return p.HasValue ? p.Value : (Decimal?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4058
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4059 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4060 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4061 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4062 public static Decimal? ToNullableDecimal(Binary p) { return p == null || p.Length == 0 ? (Decimal?)null : ToDecimal(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4063 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4064 public static Decimal? ToNullableDecimal(Byte[] p) { return p == null || p.Length == 0 ? (Decimal?)null : ToDecimal(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4065
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4066 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4067
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4068 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4069 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4070 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4071 public static Decimal? ToNullableDecimal(SqlBoolean p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4072 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4073 public static Decimal? ToNullableDecimal(SqlByte p) { return p.IsNull ? (Decimal?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4074 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4075 public static Decimal? ToNullableDecimal(SqlDecimal p) { return p.IsNull ? (Decimal?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4076 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4077 public static Decimal? ToNullableDecimal(SqlDouble p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4078 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4079 public static Decimal? ToNullableDecimal(SqlInt16 p) { return p.IsNull ? (Decimal?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4080 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4081 public static Decimal? ToNullableDecimal(SqlInt32 p) { return p.IsNull ? (Decimal?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4082 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4083 public static Decimal? ToNullableDecimal(SqlInt64 p) { return p.IsNull ? (Decimal?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4084 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4085 public static Decimal? ToNullableDecimal(SqlMoney p) { return p.IsNull ? (Decimal?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4086 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4087 public static Decimal? ToNullableDecimal(SqlSingle p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4088 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4089 public static Decimal? ToNullableDecimal(SqlString p) { return p.IsNull ? (Decimal?)null : ToDecimal(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4090
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4091 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4092
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4093 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4094 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4095 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Decimal?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4096 public static Decimal? ToNullableDecimal(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4097 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4098 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4099
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4100 if (p is Decimal?) return (Decimal?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4102 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4103
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4104 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4105 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4106 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4107 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4108 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4109 case TypeCode.SByte : return ToNullableDecimal((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4110 case TypeCode.Int16 : return ToNullableDecimal((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4111 case TypeCode.Int32 : return ToNullableDecimal((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4112 case TypeCode.Int64 : return ToNullableDecimal((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4113 case TypeCode.Byte : return ToNullableDecimal((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4114 case TypeCode.UInt16 : return ToNullableDecimal((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4115 case TypeCode.UInt32 : return ToNullableDecimal((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4116 case TypeCode.Char : return ToNullableDecimal((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4117 case TypeCode.UInt64 : return ToNullableDecimal((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4118 case TypeCode.Decimal : return ToNullableDecimal((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4119 case TypeCode.Single : return ToNullableDecimal((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4120 case TypeCode.Double : return ToNullableDecimal((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4121 case TypeCode.String : return ToNullableDecimal((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4122 case TypeCode.Boolean : return ToNullableDecimal((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4123 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4125 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4126 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4127 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4128 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4129 if (p is Boolean?) return ToNullableDecimal((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4130 if (p is Byte?) return ToNullableDecimal((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4131 if (p is Char?) return ToNullableDecimal((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4132 if (p is Double?) return ToNullableDecimal((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4133 if (p is Int16?) return ToNullableDecimal((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4134 if (p is Int32?) return ToNullableDecimal((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4135 if (p is Int64?) return ToNullableDecimal((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4136 if (p is SByte?) return ToNullableDecimal((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4137 if (p is Single?) return ToNullableDecimal((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4138 if (p is UInt16?) return ToNullableDecimal((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4139 if (p is UInt32?) return ToNullableDecimal((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4140 if (p is UInt64?) return ToNullableDecimal((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4141 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4142
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4143 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4144 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4145 if (p is Binary) return ToNullableDecimal((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4146 if (p is Byte[]) return ToNullableDecimal((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4147
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4148 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4149
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4150 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4151 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4152 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4153 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4154 if (p is SqlBoolean) return ToNullableDecimal((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4155 if (p is SqlByte) return ToNullableDecimal((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4156 if (p is SqlDecimal) return ToNullableDecimal((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4157 if (p is SqlDouble) return ToNullableDecimal((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4158 if (p is SqlInt16) return ToNullableDecimal((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4159 if (p is SqlInt32) return ToNullableDecimal((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4160 if (p is SqlInt64) return ToNullableDecimal((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4161 if (p is SqlMoney) return ToNullableDecimal((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4162 if (p is SqlSingle) return ToNullableDecimal((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4163 if (p is SqlString) return ToNullableDecimal((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4164 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4165
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4166 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4167
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4168 throw CreateInvalidCastException(p.GetType(), typeof(Decimal?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4169 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4170
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4171 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4172
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4173 #region Double?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4174
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4175 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4176 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4177 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4178 public static Double? ToNullableDouble(Boolean p) { return p ? (Double?)1 : (Double?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4179 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4180 public static Double? ToNullableDouble(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4181 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4182 public static Double? ToNullableDouble(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4183 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4184 public static Double? ToNullableDouble(DateTime p) { return (p - DateTime.MinValue).TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4185 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4186 public static Double? ToNullableDouble(DateTimeOffset p) { return (p - DateTimeOffset.MinValue).TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4187 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4188 public static Double? ToNullableDouble(Decimal p) { return checked((Double?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4189 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4190 public static Double? ToNullableDouble(Double p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4191 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4192 public static Double? ToNullableDouble(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4193 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4194 public static Double? ToNullableDouble(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4195 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4196 public static Double? ToNullableDouble(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4197 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4198 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4199 public static Double? ToNullableDouble(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4200 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4201 public static Double? ToNullableDouble(Single p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4202 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4203 public static Double? ToNullableDouble(String p) { return p == null? (Double?)null : Double.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4204 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4205 public static Double? ToNullableDouble(TimeSpan p) { return p.TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4206 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4207 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4208 public static Double? ToNullableDouble(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4209 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4210 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4211 public static Double? ToNullableDouble(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4212 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4213 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4214 public static Double? ToNullableDouble(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4215
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4216 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4217 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4218 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4219 public static Double? ToNullableDouble(Boolean? p) { return p.HasValue && p.Value ? (Double?)1: (Double?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4220 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4221 public static Double? ToNullableDouble(Byte? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4222 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4223 public static Double? ToNullableDouble(Char? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4224 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4225 public static Double? ToNullableDouble(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).TotalDays : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4226 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4227 public static Double? ToNullableDouble(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTimeOffset.MinValue).TotalDays : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4228 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4229 public static Double? ToNullableDouble(Decimal? p) { return p.HasValue ? checked((Double?)p.Value) : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4230 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4231 public static Double? ToNullableDouble(Int16? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4232 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4233 public static Double? ToNullableDouble(Int32? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4234 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4235 public static Double? ToNullableDouble(Int64? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4236 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4237 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4238 public static Double? ToNullableDouble(SByte? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4239 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4240 public static Double? ToNullableDouble(Single? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4241 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4242 public static Double? ToNullableDouble(TimeSpan? p) { return p.HasValue ? p.Value.TotalDays : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4243 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4244 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4245 public static Double? ToNullableDouble(UInt16? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4246 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4247 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4248 public static Double? ToNullableDouble(UInt32? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4249 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4250 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4251 public static Double? ToNullableDouble(UInt64? p) { return p.HasValue ? p.Value : (Double?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4253 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4254 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4255 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4256 public static Double? ToNullableDouble(Binary p) { return p == null || p.Length == 0 ? (Double?)null : BitConverter.ToDouble(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4257 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4258 public static Double? ToNullableDouble(Byte[] p) { return p == null || p.Length == 0 ? (Double?)null : BitConverter.ToDouble(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4259
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4260 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4261
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4262 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4263 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4264 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4265 public static Double? ToNullableDouble(SqlBoolean p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4266 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4267 public static Double? ToNullableDouble(SqlByte p) { return p.IsNull ? (Double?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4268 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4269 public static Double? ToNullableDouble(SqlDateTime p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4270 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4271 public static Double? ToNullableDouble(SqlDecimal p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4272 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4273 public static Double? ToNullableDouble(SqlDouble p) { return p.IsNull ? (Double?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4274 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4275 public static Double? ToNullableDouble(SqlInt16 p) { return p.IsNull ? (Double?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4276 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4277 public static Double? ToNullableDouble(SqlInt32 p) { return p.IsNull ? (Double?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4278 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4279 public static Double? ToNullableDouble(SqlInt64 p) { return p.IsNull ? (Double?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4280 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4281 public static Double? ToNullableDouble(SqlMoney p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4282 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4283 public static Double? ToNullableDouble(SqlSingle p) { return p.IsNull ? (Double?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4284 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4285 public static Double? ToNullableDouble(SqlString p) { return p.IsNull ? (Double?)null : ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4286
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4287 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4288
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4289 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4290 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4291 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Double?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4292 public static Double? ToNullableDouble(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4293 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4294 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4295
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4296 if (p is Double?) return (Double?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4297
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4298 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4299
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4300 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4301 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4302 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4303 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4304 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4305 case TypeCode.DateTime : return ToNullableDouble((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4306 case TypeCode.SByte : return ToNullableDouble((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4307 case TypeCode.Int16 : return ToNullableDouble((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4308 case TypeCode.Int32 : return ToNullableDouble((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4309 case TypeCode.Int64 : return ToNullableDouble((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4310 case TypeCode.Byte : return ToNullableDouble((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4311 case TypeCode.UInt16 : return ToNullableDouble((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4312 case TypeCode.UInt32 : return ToNullableDouble((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4313 case TypeCode.Char : return ToNullableDouble((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4314 case TypeCode.UInt64 : return ToNullableDouble((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4315 case TypeCode.Single : return ToNullableDouble((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4316 case TypeCode.Double : return ToNullableDouble((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4317 case TypeCode.Decimal : return ToNullableDouble((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4318 case TypeCode.String : return ToNullableDouble((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4319 case TypeCode.Boolean : return ToNullableDouble((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4320 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4321
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4322 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4323 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4324 if (p is DateTimeOffset) return ToNullableDouble((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4325 if (p is TimeSpan) return ToNullableDouble((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4326
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4327 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4328 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4329 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4330 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4331 if (p is Boolean?) return ToNullableDouble((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4332 if (p is Byte?) return ToNullableDouble((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4333 if (p is Char?) return ToNullableDouble((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4334 if (p is DateTime?) return ToNullableDouble((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4335 if (p is DateTimeOffset?) return ToNullableDouble((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4336 if (p is Decimal?) return ToNullableDouble((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4337 if (p is Int16?) return ToNullableDouble((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4338 if (p is Int32?) return ToNullableDouble((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4339 if (p is Int64?) return ToNullableDouble((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4340 if (p is SByte?) return ToNullableDouble((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4341 if (p is Single?) return ToNullableDouble((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4342 if (p is TimeSpan?) return ToNullableDouble((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4343 if (p is UInt16?) return ToNullableDouble((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4344 if (p is UInt32?) return ToNullableDouble((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4345 if (p is UInt64?) return ToNullableDouble((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4346 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4347
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4348 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4349 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4350 if (p is Binary) return ToNullableDouble((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4351 if (p is Byte[]) return ToNullableDouble((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4352
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4353 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4354
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4355 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4356 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4357 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4358 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4359 if (p is SqlBoolean) return ToNullableDouble((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4360 if (p is SqlByte) return ToNullableDouble((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4361 if (p is SqlDateTime) return ToNullableDouble((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4362 if (p is SqlDecimal) return ToNullableDouble((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4363 if (p is SqlDouble) return ToNullableDouble((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4364 if (p is SqlInt16) return ToNullableDouble((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4365 if (p is SqlInt32) return ToNullableDouble((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4366 if (p is SqlInt64) return ToNullableDouble((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4367 if (p is SqlMoney) return ToNullableDouble((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4368 if (p is SqlSingle) return ToNullableDouble((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4369 if (p is SqlString) return ToNullableDouble((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4370 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4371
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4372 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4373
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4374 throw CreateInvalidCastException(p.GetType(), typeof(Double?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4375 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4376
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4377 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4378
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4379 #region Guid?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4380
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4381 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4382 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4383 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4384 public static Guid? ToNullableGuid(Guid p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4385 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4386 public static Guid? ToNullableGuid(String p) { return p == null ? (Guid?)null : new Guid(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4387
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4388 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4389 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4390 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4391 public static Guid? ToNullableGuid(Binary p) { return p == null ? (Guid?)null : new Guid(p.ToArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4392 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4393 public static Guid? ToNullableGuid(Byte[] p) { return p == null ? (Guid?)null : new Guid(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4394 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4395 public static Guid? ToNullableGuid(Type p) { return p == null ? (Guid?)null : p.GUID; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4396
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4397 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4398
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4399 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4400 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4401 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4402 public static Guid? ToNullableGuid(SqlBinary p) { return p.IsNull ? (Guid?)null : p.ToSqlGuid().Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4403 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4404 public static Guid? ToNullableGuid(SqlGuid p) { return p.IsNull ? (Guid?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4405 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4406 public static Guid? ToNullableGuid(SqlString p) { return p.IsNull ? (Guid?)null : new Guid(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4407
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4408 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4409
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4410 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4411 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4412 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Guid?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4413 public static Guid? ToNullableGuid(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4414 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4415 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4416
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4417 if (p is Guid?) return (Guid?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4418
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4419 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4420
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4421 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4422 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4423 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4424 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4425 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4426 case TypeCode.String : return ToNullableGuid((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4427 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4428
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4429 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4430 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4431 if (p is Guid) return ToNullableGuid((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4432
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4433 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4434 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4435 if (p is Binary) return ToNullableGuid((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4436 if (p is Byte[]) return ToNullableGuid((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4437 if (p is Type) return ToNullableGuid((Type) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4438
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4439 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4440
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4441 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4442 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4443 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4444 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4445 if (p is SqlBinary) return ToNullableGuid((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4446 if (p is SqlGuid) return ToNullableGuid((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4447 if (p is SqlString) return ToNullableGuid((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4448 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4449
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4450 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4451
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4452 throw CreateInvalidCastException(p.GetType(), typeof(Guid?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4453 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4454
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4455 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4457 #region Int16?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4458
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4459 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4460 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4461 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4462 public static Int16? ToNullableInt16(Boolean p) { return p ? (Int16?)1 : (Int16?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4463 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4464 public static Int16? ToNullableInt16(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4465 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4466 public static Int16? ToNullableInt16(Char p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4467 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4468 public static Int16? ToNullableInt16(Decimal p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4469 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4470 public static Int16? ToNullableInt16(Double p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4471 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4472 public static Int16? ToNullableInt16(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4473 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4474 public static Int16? ToNullableInt16(Int32 p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4475 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4476 public static Int16? ToNullableInt16(Int64 p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4477 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4478 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4479 public static Int16? ToNullableInt16(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4480 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4481 public static Int16? ToNullableInt16(Single p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4482 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4483 public static Int16? ToNullableInt16(String p) { return p == null? (Int16?)null : Int16.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4484 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4485 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4486 public static Int16? ToNullableInt16(UInt16 p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4487 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4488 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4489 public static Int16? ToNullableInt16(UInt32 p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4490 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4491 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4492 public static Int16? ToNullableInt16(UInt64 p) { return checked((Int16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4493
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4494 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4495 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4496 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4497 public static Int16? ToNullableInt16(Boolean? p) { return p.HasValue && p.Value ? (Int16?)1: (Int16?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4498 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4499 public static Int16? ToNullableInt16(Byte? p) { return p.HasValue ? p.Value : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4500 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4501 public static Int16? ToNullableInt16(Char? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4502 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4503 public static Int16? ToNullableInt16(Decimal? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4504 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4505 public static Int16? ToNullableInt16(Double? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4506 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4507 public static Int16? ToNullableInt16(Int32? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4508 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4509 public static Int16? ToNullableInt16(Int64? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4510 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4511 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4512 public static Int16? ToNullableInt16(SByte? p) { return p.HasValue ? p.Value : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4513 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4514 public static Int16? ToNullableInt16(Single? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4515 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4516 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4517 public static Int16? ToNullableInt16(UInt16? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4518 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4519 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4520 public static Int16? ToNullableInt16(UInt32? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4521 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4522 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4523 public static Int16? ToNullableInt16(UInt64? p) { return p.HasValue ? checked((Int16?)p.Value) : (Int16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4524
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4525 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4526 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4527 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4528 public static Int16? ToNullableInt16(Binary p) { return p == null || p.Length == 0 ? (Int16?)null : BitConverter.ToInt16(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4529 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4530 public static Int16? ToNullableInt16(Byte[] p) { return p == null || p.Length == 0 ? (Int16?)null : BitConverter.ToInt16(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4531
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4532 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4533
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4534 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4535 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4536 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4537 public static Int16? ToNullableInt16(SqlBoolean p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4538 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4539 public static Int16? ToNullableInt16(SqlByte p) { return p.IsNull ? (Int16?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4540 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4541 public static Int16? ToNullableInt16(SqlDecimal p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4542 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4543 public static Int16? ToNullableInt16(SqlDouble p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4544 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4545 public static Int16? ToNullableInt16(SqlInt16 p) { return p.IsNull ? (Int16?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4546 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4547 public static Int16? ToNullableInt16(SqlInt32 p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4548 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4549 public static Int16? ToNullableInt16(SqlInt64 p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4550 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4551 public static Int16? ToNullableInt16(SqlMoney p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4552 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4553 public static Int16? ToNullableInt16(SqlSingle p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4554 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4555 public static Int16? ToNullableInt16(SqlString p) { return p.IsNull ? (Int16?)null : ToInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4556
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4557 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4558
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4559 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4560 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4561 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4562 public static Int16? ToNullableInt16(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4563 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4564 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4565
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4566 if (p is Int16?) return (Int16?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4567
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4568 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4569
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4570 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4571 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4572 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4573 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4574 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4575 case TypeCode.SByte : return ToNullableInt16((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4576 case TypeCode.Int16 : return ToNullableInt16((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4577 case TypeCode.Byte : return ToNullableInt16((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4578 case TypeCode.Int32 : return ToNullableInt16((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4579 case TypeCode.Int64 : return ToNullableInt16((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4580 case TypeCode.UInt16 : return ToNullableInt16((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4581 case TypeCode.UInt32 : return ToNullableInt16((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4582 case TypeCode.UInt64 : return ToNullableInt16((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4583 case TypeCode.Single : return ToNullableInt16((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4584 case TypeCode.Double : return ToNullableInt16((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4585 case TypeCode.Decimal : return ToNullableInt16((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4586 case TypeCode.Char : return ToNullableInt16((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4587 case TypeCode.String : return ToNullableInt16((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4588 case TypeCode.Boolean : return ToNullableInt16((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4589 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4590
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4591 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4592 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4593 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4594 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4595 if (p is Boolean?) return ToNullableInt16((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4596 if (p is Byte?) return ToNullableInt16((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4597 if (p is Char?) return ToNullableInt16((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4598 if (p is Decimal?) return ToNullableInt16((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4599 if (p is Double?) return ToNullableInt16((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4600 if (p is Int32?) return ToNullableInt16((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4601 if (p is Int64?) return ToNullableInt16((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4602 if (p is SByte?) return ToNullableInt16((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4603 if (p is Single?) return ToNullableInt16((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4604 if (p is UInt16?) return ToNullableInt16((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4605 if (p is UInt32?) return ToNullableInt16((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4606 if (p is UInt64?) return ToNullableInt16((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4607 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4608
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4609 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4610 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4611 if (p is Binary) return ToNullableInt16((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4612 if (p is Byte[]) return ToNullableInt16((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4613
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4614 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4615
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4616 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4617 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4618 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4619 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4620 if (p is SqlBoolean) return ToNullableInt16((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4621 if (p is SqlByte) return ToNullableInt16((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4622 if (p is SqlDecimal) return ToNullableInt16((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4623 if (p is SqlDouble) return ToNullableInt16((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4624 if (p is SqlInt16) return ToNullableInt16((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4625 if (p is SqlInt32) return ToNullableInt16((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4626 if (p is SqlInt64) return ToNullableInt16((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4627 if (p is SqlMoney) return ToNullableInt16((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4628 if (p is SqlSingle) return ToNullableInt16((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4629 if (p is SqlString) return ToNullableInt16((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4630 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4631
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4632 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4633
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4634 throw CreateInvalidCastException(p.GetType(), typeof(Int16?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4635 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4636
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4637 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4638
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4639 #region Int32?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4640
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4641 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4642 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4643 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4644 public static Int32? ToNullableInt32(Boolean p) { return p ? (Int32?)1 : (Int32?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4645 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4646 public static Int32? ToNullableInt32(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4647 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4648 public static Int32? ToNullableInt32(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4649 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4650 public static Int32? ToNullableInt32(Decimal p) { return checked((Int32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4651 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4652 public static Int32? ToNullableInt32(Double p) { return checked((Int32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4653 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4654 public static Int32? ToNullableInt32(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4655 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4656 public static Int32? ToNullableInt32(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4657 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4658 public static Int32? ToNullableInt32(Int64 p) { return checked((Int32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4659 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4660 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4661 public static Int32? ToNullableInt32(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4662 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4663 public static Int32? ToNullableInt32(Single p) { return checked((Int32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4664 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4665 public static Int32? ToNullableInt32(String p) { return p == null? (Int32?)null : Int32.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4666 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4667 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4668 public static Int32? ToNullableInt32(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4669 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4670 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4671 public static Int32? ToNullableInt32(UInt32 p) { return checked((Int32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4672 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4673 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4674 public static Int32? ToNullableInt32(UInt64 p) { return checked((Int32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4675
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4676 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4677 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4678 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4679 public static Int32? ToNullableInt32(Boolean? p) { return p.HasValue && p.Value ? (Int32?)1: (Int32?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4680 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4681 public static Int32? ToNullableInt32(Byte? p) { return p.HasValue ? p.Value : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4682 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4683 public static Int32? ToNullableInt32(Char? p) { return p.HasValue ? p.Value : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4684 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4685 public static Int32? ToNullableInt32(Decimal? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4686 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4687 public static Int32? ToNullableInt32(Double? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4688 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4689 public static Int32? ToNullableInt32(Int16? p) { return p.HasValue ? p.Value : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4690 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4691 public static Int32? ToNullableInt32(Int64? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4692 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4693 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4694 public static Int32? ToNullableInt32(SByte? p) { return p.HasValue ? p.Value : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4695 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4696 public static Int32? ToNullableInt32(Single? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4697 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4698 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4699 public static Int32? ToNullableInt32(UInt16? p) { return p.HasValue ? p.Value : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4700 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4701 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4702 public static Int32? ToNullableInt32(UInt32? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4703 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4704 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4705 public static Int32? ToNullableInt32(UInt64? p) { return p.HasValue ? checked((Int32?)p.Value) : (Int32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4706
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4707 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4708 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4709 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4710 public static Int32? ToNullableInt32(Binary p) { return p == null || p.Length == 0 ? (Int32?)null : BitConverter.ToInt32(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4711 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4712 public static Int32? ToNullableInt32(Byte[] p) { return p == null || p.Length == 0 ? (Int32?)null : BitConverter.ToInt32(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4713
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4714 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4715
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4716 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4717 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4718 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4719 public static Int32? ToNullableInt32(SqlBoolean p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4720 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4721 public static Int32? ToNullableInt32(SqlByte p) { return p.IsNull ? (Int32?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4722 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4723 public static Int32? ToNullableInt32(SqlDecimal p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4724 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4725 public static Int32? ToNullableInt32(SqlDouble p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4726 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4727 public static Int32? ToNullableInt32(SqlInt16 p) { return p.IsNull ? (Int32?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4728 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4729 public static Int32? ToNullableInt32(SqlInt32 p) { return p.IsNull ? (Int32?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4730 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4731 public static Int32? ToNullableInt32(SqlInt64 p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4732 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4733 public static Int32? ToNullableInt32(SqlMoney p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4734 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4735 public static Int32? ToNullableInt32(SqlSingle p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4736 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4737 public static Int32? ToNullableInt32(SqlString p) { return p.IsNull ? (Int32?)null : ToInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4738
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4739 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4740
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4741 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4742 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4743 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4744 public static Int32? ToNullableInt32(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4745 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4746 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4747
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4748 if (p is Int32?) return (Int32?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4749
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4750 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4751
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4752 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4753 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4754 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4755 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4756 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4757 case TypeCode.SByte : return ToNullableInt32((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4758 case TypeCode.Int16 : return ToNullableInt32((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4759 case TypeCode.Int32 : return ToNullableInt32((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4760 case TypeCode.Byte : return ToNullableInt32((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4761 case TypeCode.UInt16 : return ToNullableInt32((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4762 case TypeCode.Char : return ToNullableInt32((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4763 case TypeCode.Int64 : return ToNullableInt32((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4764 case TypeCode.UInt32 : return ToNullableInt32((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4765 case TypeCode.UInt64 : return ToNullableInt32((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4766 case TypeCode.Single : return ToNullableInt32((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4767 case TypeCode.Double : return ToNullableInt32((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4768 case TypeCode.Decimal : return ToNullableInt32((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4769 case TypeCode.String : return ToNullableInt32((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4770 case TypeCode.Boolean : return ToNullableInt32((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4771 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4772
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4773 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4774 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4775 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4776 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4777 if (p is Boolean?) return ToNullableInt32((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4778 if (p is Byte?) return ToNullableInt32((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4779 if (p is Char?) return ToNullableInt32((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4780 if (p is Decimal?) return ToNullableInt32((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4781 if (p is Double?) return ToNullableInt32((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4782 if (p is Int16?) return ToNullableInt32((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4783 if (p is Int64?) return ToNullableInt32((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4784 if (p is SByte?) return ToNullableInt32((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4785 if (p is Single?) return ToNullableInt32((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4786 if (p is UInt16?) return ToNullableInt32((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4787 if (p is UInt32?) return ToNullableInt32((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4788 if (p is UInt64?) return ToNullableInt32((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4789 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4790
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4791 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4792 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4793 if (p is Binary) return ToNullableInt32((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4794 if (p is Byte[]) return ToNullableInt32((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4795
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4796 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4797
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4798 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4799 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4800 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4801 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4802 if (p is SqlBoolean) return ToNullableInt32((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4803 if (p is SqlByte) return ToNullableInt32((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4804 if (p is SqlDecimal) return ToNullableInt32((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4805 if (p is SqlDouble) return ToNullableInt32((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4806 if (p is SqlInt16) return ToNullableInt32((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4807 if (p is SqlInt32) return ToNullableInt32((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4808 if (p is SqlInt64) return ToNullableInt32((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4809 if (p is SqlMoney) return ToNullableInt32((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4810 if (p is SqlSingle) return ToNullableInt32((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4811 if (p is SqlString) return ToNullableInt32((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4812 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4813
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4814 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4815
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4816 throw CreateInvalidCastException(p.GetType(), typeof(Int32?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4817 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4818
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4819 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4820
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4821 #region Int64?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4822
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4823 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4824 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4825 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4826 public static Int64? ToNullableInt64(Boolean p) { return p ? (Int64?)1 : (Int64?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4827 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4828 public static Int64? ToNullableInt64(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4829 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4830 public static Int64? ToNullableInt64(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4831 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4832 public static Int64? ToNullableInt64(DateTime p) { return (p - DateTime.MinValue).Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4833 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4834 public static Int64? ToNullableInt64(DateTimeOffset p) { return (p - DateTime.MinValue).Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4835 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4836 public static Int64? ToNullableInt64(Decimal p) { return checked((Int64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4837 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4838 public static Int64? ToNullableInt64(Double p) { return checked((Int64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4839 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4840 public static Int64? ToNullableInt64(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4841 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4842 public static Int64? ToNullableInt64(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4843 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4844 public static Int64? ToNullableInt64(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4845 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4846 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4847 public static Int64? ToNullableInt64(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4848 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4849 public static Int64? ToNullableInt64(Single p) { return checked((Int64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4850 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4851 public static Int64? ToNullableInt64(String p) { return p == null? (Int64?)null : Int64.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4852 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4853 public static Int64? ToNullableInt64(TimeSpan p) { return p.Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4854 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4855 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4856 public static Int64? ToNullableInt64(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4857 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4858 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4859 public static Int64? ToNullableInt64(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4860 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4861 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4862 public static Int64? ToNullableInt64(UInt64 p) { return checked((Int64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4863
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4864 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4865 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4866 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4867 public static Int64? ToNullableInt64(Boolean? p) { return p.HasValue && p.Value ? (Int64?)1: (Int64?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4868 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4869 public static Int64? ToNullableInt64(Byte? p) { return p.HasValue ? p.Value : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4870 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4871 public static Int64? ToNullableInt64(Char? p) { return p.HasValue ? p.Value : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4872 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4873 public static Int64? ToNullableInt64(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4874 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4875 public static Int64? ToNullableInt64(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4876 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4877 public static Int64? ToNullableInt64(Decimal? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4878 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4879 public static Int64? ToNullableInt64(Double? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4880 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4881 public static Int64? ToNullableInt64(Int16? p) { return p.HasValue ? p.Value : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4882 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4883 public static Int64? ToNullableInt64(Int32? p) { return p.HasValue ? p.Value : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4884 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4885 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4886 public static Int64? ToNullableInt64(SByte? p) { return p.HasValue ? p.Value : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4887 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4888 public static Int64? ToNullableInt64(Single? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4889 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4890 public static Int64? ToNullableInt64(TimeSpan? p) { return p.HasValue ? p.Value.Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4891 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4892 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4893 public static Int64? ToNullableInt64(UInt16? p) { return p.HasValue ? p.Value : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4894 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4895 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4896 public static Int64? ToNullableInt64(UInt32? p) { return p.HasValue ? p.Value : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4897 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4898 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4899 public static Int64? ToNullableInt64(UInt64? p) { return p.HasValue ? checked((Int64?)p.Value) : (Int64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4900
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4901 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4902 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4903 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4904 public static Int64? ToNullableInt64(Binary p) { return p == null || p.Length == 0 ? (Int64?)null : BitConverter.ToInt64(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4905 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4906 public static Int64? ToNullableInt64(Byte[] p) { return p == null || p.Length == 0 ? (Int64?)null : BitConverter.ToInt64(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4907
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4908 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4909
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4910 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4911 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4912 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4913 public static Int64? ToNullableInt64(SqlBoolean p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4914 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4915 public static Int64? ToNullableInt64(SqlByte p) { return p.IsNull ? (Int64?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4916 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4917 public static Int64? ToNullableInt64(SqlDateTime p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4918 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4919 public static Int64? ToNullableInt64(SqlDecimal p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4920 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4921 public static Int64? ToNullableInt64(SqlDouble p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4922 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4923 public static Int64? ToNullableInt64(SqlInt16 p) { return p.IsNull ? (Int64?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4924 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4925 public static Int64? ToNullableInt64(SqlInt32 p) { return p.IsNull ? (Int64?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4926 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4927 public static Int64? ToNullableInt64(SqlInt64 p) { return p.IsNull ? (Int64?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4928 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4929 public static Int64? ToNullableInt64(SqlMoney p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4930 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4931 public static Int64? ToNullableInt64(SqlSingle p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4932 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4933 public static Int64? ToNullableInt64(SqlString p) { return p.IsNull ? (Int64?)null : ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4934
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4935 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4936
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4937 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4938 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4939 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Int64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4940 public static Int64? ToNullableInt64(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4941 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4942 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4943
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4944 if (p is Int64?) return (Int64?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4945
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4946 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4947
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4948 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4949 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4950 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4951 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4952 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4953 case TypeCode.DateTime : return ToNullableInt64((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4954 case TypeCode.SByte : return ToNullableInt64((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4955 case TypeCode.Int16 : return ToNullableInt64((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4956 case TypeCode.Int32 : return ToNullableInt64((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4957 case TypeCode.Int64 : return ToNullableInt64((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4958 case TypeCode.Byte : return ToNullableInt64((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4959 case TypeCode.UInt16 : return ToNullableInt64((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4960 case TypeCode.UInt32 : return ToNullableInt64((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4961 case TypeCode.Char : return ToNullableInt64((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4962 case TypeCode.UInt64 : return ToNullableInt64((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4963 case TypeCode.Single : return ToNullableInt64((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4964 case TypeCode.Double : return ToNullableInt64((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4965 case TypeCode.Decimal : return ToNullableInt64((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4966 case TypeCode.String : return ToNullableInt64((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4967 case TypeCode.Boolean : return ToNullableInt64((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4968 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4969
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4970 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4971 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4972 if (p is DateTimeOffset) return ToNullableInt64((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4973 if (p is TimeSpan) return ToNullableInt64((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4974
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4975 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4976 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4977 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4978 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4979 if (p is Boolean?) return ToNullableInt64((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4980 if (p is Byte?) return ToNullableInt64((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4981 if (p is Char?) return ToNullableInt64((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4982 if (p is DateTime?) return ToNullableInt64((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4983 if (p is DateTimeOffset?) return ToNullableInt64((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4984 if (p is Decimal?) return ToNullableInt64((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4985 if (p is Double?) return ToNullableInt64((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4986 if (p is Int16?) return ToNullableInt64((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4987 if (p is Int32?) return ToNullableInt64((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4988 if (p is SByte?) return ToNullableInt64((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4989 if (p is Single?) return ToNullableInt64((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4990 if (p is TimeSpan?) return ToNullableInt64((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4991 if (p is UInt16?) return ToNullableInt64((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4992 if (p is UInt32?) return ToNullableInt64((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4993 if (p is UInt64?) return ToNullableInt64((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4994 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4995
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4996 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4997 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4998 if (p is Binary) return ToNullableInt64((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4999 if (p is Byte[]) return ToNullableInt64((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5000
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5001 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5002
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5003 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5004 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5005 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5006 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5007 if (p is SqlBoolean) return ToNullableInt64((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5008 if (p is SqlByte) return ToNullableInt64((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5009 if (p is SqlDateTime) return ToNullableInt64((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5010 if (p is SqlDecimal) return ToNullableInt64((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5011 if (p is SqlDouble) return ToNullableInt64((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5012 if (p is SqlInt16) return ToNullableInt64((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5013 if (p is SqlInt32) return ToNullableInt64((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5014 if (p is SqlInt64) return ToNullableInt64((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5015 if (p is SqlMoney) return ToNullableInt64((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5016 if (p is SqlSingle) return ToNullableInt64((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5017 if (p is SqlString) return ToNullableInt64((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5018 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5019
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5020 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5021
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5022 throw CreateInvalidCastException(p.GetType(), typeof(Int64?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5023 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5024
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5025 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5026
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5027 #region SByte?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5028
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5029 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5030 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5031 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5032 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5033 public static SByte? ToNullableSByte(Boolean p) { return p ? (SByte?)1 : (SByte?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5034 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5035 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5036 public static SByte? ToNullableSByte(Byte p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5037 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5038 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5039 public static SByte? ToNullableSByte(Char p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5040 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5041 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5042 public static SByte? ToNullableSByte(Decimal p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5043 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5044 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5045 public static SByte? ToNullableSByte(Double p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5046 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5047 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5048 public static SByte? ToNullableSByte(Int16 p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5049 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5050 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5051 public static SByte? ToNullableSByte(Int32 p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5052 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5053 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5054 public static SByte? ToNullableSByte(Int64 p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5055 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5056 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5057 public static SByte? ToNullableSByte(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5058 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5059 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5060 public static SByte? ToNullableSByte(Single p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5061 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5062 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5063 public static SByte? ToNullableSByte(String p) { return p == null? (SByte?)null : SByte.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5064 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5065 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5066 public static SByte? ToNullableSByte(UInt16 p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5067 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5068 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5069 public static SByte? ToNullableSByte(UInt32 p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5070 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5071 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5072 public static SByte? ToNullableSByte(UInt64 p) { return checked((SByte?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5073
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5074 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5075 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5076 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5077 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5078 public static SByte? ToNullableSByte(Boolean? p) { return p.HasValue && p.Value ? (SByte?)1: (SByte?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5079 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5080 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5081 public static SByte? ToNullableSByte(Byte? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5082 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5083 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5084 public static SByte? ToNullableSByte(Char? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5085 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5086 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5087 public static SByte? ToNullableSByte(Decimal? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5088 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5089 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5090 public static SByte? ToNullableSByte(Double? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5091 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5092 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5093 public static SByte? ToNullableSByte(Int16? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5094 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5095 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5096 public static SByte? ToNullableSByte(Int32? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5097 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5098 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5099 public static SByte? ToNullableSByte(Int64? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5100 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5101 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5102 public static SByte? ToNullableSByte(Single? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5103 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5104 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5105 public static SByte? ToNullableSByte(UInt16? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5106 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5107 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5108 public static SByte? ToNullableSByte(UInt32? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5109 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5110 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5111 public static SByte? ToNullableSByte(UInt64? p) { return p.HasValue ? checked((SByte?)p.Value) : (SByte?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5112
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5113 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5114 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5115 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5116 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5117 public static SByte? ToNullableSByte(Binary p) { return p == null || p.Length == 0 ? (SByte?)null : checked((SByte?)p.ToArray()[0]); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5118 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5119 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5120 public static SByte? ToNullableSByte(Byte[] p) { return p == null || p.Length == 0 ? (SByte?)null : checked((SByte?)p[0]); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5122 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5124 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5125 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5126 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5127 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5128 public static SByte? ToNullableSByte(SqlBoolean p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5129 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5130 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5131 public static SByte? ToNullableSByte(SqlByte p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5132 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5133 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5134 public static SByte? ToNullableSByte(SqlDecimal p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5135 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5136 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5137 public static SByte? ToNullableSByte(SqlDouble p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5138 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5139 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5140 public static SByte? ToNullableSByte(SqlInt16 p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5141 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5142 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5143 public static SByte? ToNullableSByte(SqlInt32 p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5144 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5145 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5146 public static SByte? ToNullableSByte(SqlInt64 p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5147 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5148 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5149 public static SByte? ToNullableSByte(SqlMoney p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5150 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5151 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5152 public static SByte? ToNullableSByte(SqlSingle p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5153 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5154 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5155 public static SByte? ToNullableSByte(SqlString p) { return p.IsNull ? (SByte?)null : ToSByte(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5156
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5157 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5158
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5159 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5160 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5161 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SByte?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5162 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5163 public static SByte? ToNullableSByte(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5164 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5165 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5166
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5167 if (p is SByte?) return (SByte?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5169 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5170
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5171 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5172 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5173 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5174 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5175 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5176 case TypeCode.SByte : return ToNullableSByte((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5177 case TypeCode.Int16 : return ToNullableSByte((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5178 case TypeCode.Int32 : return ToNullableSByte((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5179 case TypeCode.Int64 : return ToNullableSByte((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5180 case TypeCode.Byte : return ToNullableSByte((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5181 case TypeCode.UInt16 : return ToNullableSByte((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5182 case TypeCode.UInt32 : return ToNullableSByte((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5183 case TypeCode.UInt64 : return ToNullableSByte((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5184 case TypeCode.Single : return ToNullableSByte((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5185 case TypeCode.Double : return ToNullableSByte((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5186 case TypeCode.Decimal : return ToNullableSByte((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5187 case TypeCode.Char : return ToNullableSByte((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5188 case TypeCode.String : return ToNullableSByte((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5189 case TypeCode.Boolean : return ToNullableSByte((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5190 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5191
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5192 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5193 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5194 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5195 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5196 if (p is Boolean?) return ToNullableSByte((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5197 if (p is Byte?) return ToNullableSByte((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5198 if (p is Char?) return ToNullableSByte((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5199 if (p is Decimal?) return ToNullableSByte((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5200 if (p is Double?) return ToNullableSByte((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5201 if (p is Int16?) return ToNullableSByte((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5202 if (p is Int32?) return ToNullableSByte((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5203 if (p is Int64?) return ToNullableSByte((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5204 if (p is Single?) return ToNullableSByte((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5205 if (p is UInt16?) return ToNullableSByte((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5206 if (p is UInt32?) return ToNullableSByte((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5207 if (p is UInt64?) return ToNullableSByte((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5208 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5209
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5210 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5211 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5212 if (p is Binary) return ToNullableSByte((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5213 if (p is Byte[]) return ToNullableSByte((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5214
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5215 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5216
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5217 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5218 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5219 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5220 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5221 if (p is SqlBoolean) return ToNullableSByte((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5222 if (p is SqlByte) return ToNullableSByte((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5223 if (p is SqlDecimal) return ToNullableSByte((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5224 if (p is SqlDouble) return ToNullableSByte((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5225 if (p is SqlInt16) return ToNullableSByte((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5226 if (p is SqlInt32) return ToNullableSByte((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5227 if (p is SqlInt64) return ToNullableSByte((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5228 if (p is SqlMoney) return ToNullableSByte((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5229 if (p is SqlSingle) return ToNullableSByte((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5230 if (p is SqlString) return ToNullableSByte((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5231 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5232
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5233 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5234
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5235 throw CreateInvalidCastException(p.GetType(), typeof(SByte?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5236 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5237
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5238 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5239
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5240 #region Single?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5241
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5242 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5243 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5244 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5245 public static Single? ToNullableSingle(Boolean p) { return p ? (Single?)1 : (Single?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5246 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5247 public static Single? ToNullableSingle(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5248 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5249 public static Single? ToNullableSingle(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5250 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5251 public static Single? ToNullableSingle(Decimal p) { return checked((Single?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5252 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5253 public static Single? ToNullableSingle(Double p) { return checked((Single?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5254 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5255 public static Single? ToNullableSingle(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5256 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5257 public static Single? ToNullableSingle(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5258 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5259 public static Single? ToNullableSingle(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5260 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5261 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5262 public static Single? ToNullableSingle(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5263 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5264 public static Single? ToNullableSingle(Single p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5265 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5266 public static Single? ToNullableSingle(String p) { return p == null? (Single?)null : Single.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5267 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5268 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5269 public static Single? ToNullableSingle(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5270 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5271 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5272 public static Single? ToNullableSingle(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5273 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5274 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5275 public static Single? ToNullableSingle(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5276
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5277 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5278 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5279 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5280 public static Single? ToNullableSingle(Boolean? p) { return p.HasValue && p.Value ? (Single?)1: (Single?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5281 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5282 public static Single? ToNullableSingle(Byte? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5283 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5284 public static Single? ToNullableSingle(Char? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5285 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5286 public static Single? ToNullableSingle(Decimal? p) { return p.HasValue ? checked((Single?)p.Value) : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5287 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5288 public static Single? ToNullableSingle(Double? p) { return p.HasValue ? checked((Single?)p.Value) : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5289 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5290 public static Single? ToNullableSingle(Int16? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5291 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5292 public static Single? ToNullableSingle(Int32? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5293 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5294 public static Single? ToNullableSingle(Int64? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5295 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5296 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5297 public static Single? ToNullableSingle(SByte? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5298 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5299 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5300 public static Single? ToNullableSingle(UInt16? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5301 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5302 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5303 public static Single? ToNullableSingle(UInt32? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5304 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5305 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5306 public static Single? ToNullableSingle(UInt64? p) { return p.HasValue ? p.Value : (Single?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5307
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5308 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5309 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5310 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5311 public static Single? ToNullableSingle(Binary p) { return p == null || p.Length == 0 ? (Single?)null : BitConverter.ToSingle(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5312 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5313 public static Single? ToNullableSingle(Byte[] p) { return p == null || p.Length == 0 ? (Single?)null : BitConverter.ToSingle(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5314
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5315 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5316
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5317 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5318 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5319 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5320 public static Single? ToNullableSingle(SqlBoolean p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5321 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5322 public static Single? ToNullableSingle(SqlByte p) { return p.IsNull ? (Single?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5323 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5324 public static Single? ToNullableSingle(SqlDecimal p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5325 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5326 public static Single? ToNullableSingle(SqlDouble p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5327 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5328 public static Single? ToNullableSingle(SqlInt16 p) { return p.IsNull ? (Single?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5329 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5330 public static Single? ToNullableSingle(SqlInt32 p) { return p.IsNull ? (Single?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5331 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5332 public static Single? ToNullableSingle(SqlInt64 p) { return p.IsNull ? (Single?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5333 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5334 public static Single? ToNullableSingle(SqlMoney p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5335 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5336 public static Single? ToNullableSingle(SqlSingle p) { return p.IsNull ? (Single?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5337 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5338 public static Single? ToNullableSingle(SqlString p) { return p.IsNull ? (Single?)null : ToSingle(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5339
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5340 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5341
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5342 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5343 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5344 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Single?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5345 public static Single? ToNullableSingle(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5346 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5347 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5348
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5349 if (p is Single?) return (Single?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5350
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5351 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5352
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5353 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5354 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5355 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5356 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5357 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5358 case TypeCode.SByte : return ToNullableSingle((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5359 case TypeCode.Int16 : return ToNullableSingle((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5360 case TypeCode.Int32 : return ToNullableSingle((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5361 case TypeCode.Int64 : return ToNullableSingle((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5362 case TypeCode.Byte : return ToNullableSingle((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5363 case TypeCode.UInt16 : return ToNullableSingle((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5364 case TypeCode.UInt32 : return ToNullableSingle((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5365 case TypeCode.Char : return ToNullableSingle((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5366 case TypeCode.UInt64 : return ToNullableSingle((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5367 case TypeCode.Single : return ToNullableSingle((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5368 case TypeCode.Double : return ToNullableSingle((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5369 case TypeCode.Decimal : return ToNullableSingle((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5370 case TypeCode.String : return ToNullableSingle((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5371 case TypeCode.Boolean : return ToNullableSingle((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5372 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5373
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5374 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5375 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5376 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5377 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5378 if (p is Boolean?) return ToNullableSingle((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5379 if (p is Byte?) return ToNullableSingle((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5380 if (p is Char?) return ToNullableSingle((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5381 if (p is Decimal?) return ToNullableSingle((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5382 if (p is Double?) return ToNullableSingle((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5383 if (p is Int16?) return ToNullableSingle((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5384 if (p is Int32?) return ToNullableSingle((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5385 if (p is Int64?) return ToNullableSingle((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5386 if (p is SByte?) return ToNullableSingle((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5387 if (p is UInt16?) return ToNullableSingle((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5388 if (p is UInt32?) return ToNullableSingle((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5389 if (p is UInt64?) return ToNullableSingle((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5390 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5391
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5392 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5393 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5394 if (p is Binary) return ToNullableSingle((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5395 if (p is Byte[]) return ToNullableSingle((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5396
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5397 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5398
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5399 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5400 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5401 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5402 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5403 if (p is SqlBoolean) return ToNullableSingle((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5404 if (p is SqlByte) return ToNullableSingle((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5405 if (p is SqlDecimal) return ToNullableSingle((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5406 if (p is SqlDouble) return ToNullableSingle((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5407 if (p is SqlInt16) return ToNullableSingle((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5408 if (p is SqlInt32) return ToNullableSingle((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5409 if (p is SqlInt64) return ToNullableSingle((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5410 if (p is SqlMoney) return ToNullableSingle((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5411 if (p is SqlSingle) return ToNullableSingle((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5412 if (p is SqlString) return ToNullableSingle((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5413 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5414
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5415 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5416
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5417 throw CreateInvalidCastException(p.GetType(), typeof(Single?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5418 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5419
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5420 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5421
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5422 #region TimeSpan?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5423
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5424 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5425 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5426 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5427 public static TimeSpan? ToNullableTimeSpan(DateTime p) { return p - DateTime.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5428 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5429 public static TimeSpan? ToNullableTimeSpan(DateTimeOffset p) { return p - DateTimeOffset.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5430 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5431 public static TimeSpan? ToNullableTimeSpan(Double p) { return TimeSpan.FromDays (p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5432 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5433 public static TimeSpan? ToNullableTimeSpan(Int64 p) { return TimeSpan.FromTicks(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5434 /// <summary>Converts the value from <c>String</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5435 public static TimeSpan? ToNullableTimeSpan(String p) { return p == null? (TimeSpan?)null : TimeSpan.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5436 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5437 public static TimeSpan? ToNullableTimeSpan(TimeSpan p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5438
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5439 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5440 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5441 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5442 public static TimeSpan? ToNullableTimeSpan(DateTime? p) { return p.HasValue ? p.Value - DateTime.MinValue : (TimeSpan?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5443 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5444 public static TimeSpan? ToNullableTimeSpan(DateTimeOffset? p) { return p.HasValue ? p.Value - DateTimeOffset.MinValue : (TimeSpan?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5445 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5446 public static TimeSpan? ToNullableTimeSpan(Double? p) { return p.HasValue ? TimeSpan.FromDays (p.Value) : (TimeSpan?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5447 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5448 public static TimeSpan? ToNullableTimeSpan(Int64? p) { return p.HasValue ? TimeSpan.FromTicks(p.Value) : (TimeSpan?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5449
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5450 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5451 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5452 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5453 public static TimeSpan? ToNullableTimeSpan(Binary p) { return p == null || p.Length == 0? (TimeSpan?)null : TimeSpan.FromTicks(ToInt64(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5454 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5455 public static TimeSpan? ToNullableTimeSpan(Byte[] p) { return p == null || p.Length == 0? (TimeSpan?)null : TimeSpan.FromTicks(ToInt64(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5457 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5458
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5459 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5460 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5461 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5462 public static TimeSpan? ToNullableTimeSpan(SqlDateTime p) { return p.IsNull ? (TimeSpan?)null : p.Value - DateTime.MinValue; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5463 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5464 public static TimeSpan? ToNullableTimeSpan(SqlDouble p) { return p.IsNull ? (TimeSpan?)null : TimeSpan.FromDays(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5465 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5466 public static TimeSpan? ToNullableTimeSpan(SqlInt64 p) { return p.IsNull ? (TimeSpan?)null : TimeSpan.FromTicks(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5467 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5468 public static TimeSpan? ToNullableTimeSpan(SqlString p) { return p.IsNull ? (TimeSpan?)null : TimeSpan.Parse(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5469
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5470 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5471
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5472 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5473 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5474 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>TimeSpan?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5475 public static TimeSpan? ToNullableTimeSpan(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5476 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5477 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5478
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5479 if (p is TimeSpan?) return (TimeSpan?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5480
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5481 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5482
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5483 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5484 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5485 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5486 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5487 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5488 case TypeCode.DateTime : return ToNullableTimeSpan((DateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5489 case TypeCode.Int64 : return ToNullableTimeSpan((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5490 case TypeCode.Double : return ToNullableTimeSpan((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5491 case TypeCode.String : return ToNullableTimeSpan((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5492 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5493
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5494 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5495 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5496 if (p is DateTimeOffset) return ToNullableTimeSpan((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5497 if (p is TimeSpan) return ToNullableTimeSpan((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5498
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5499 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5500 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5501 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5502 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5503 if (p is DateTime?) return ToNullableTimeSpan((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5504 if (p is DateTimeOffset?) return ToNullableTimeSpan((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5505 if (p is Double?) return ToNullableTimeSpan((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5506 if (p is Int64?) return ToNullableTimeSpan((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5507 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5508
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5509 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5510 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5511 if (p is Binary) return ToNullableTimeSpan((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5512 if (p is Byte[]) return ToNullableTimeSpan((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5513
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5514 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5515
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5516 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5517 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5518 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5519 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5520 if (p is SqlDateTime) return ToNullableTimeSpan((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5521 if (p is SqlDouble) return ToNullableTimeSpan((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5522 if (p is SqlInt64) return ToNullableTimeSpan((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5523 if (p is SqlString) return ToNullableTimeSpan((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5524 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5525
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5526 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5527
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5528 throw CreateInvalidCastException(p.GetType(), typeof(TimeSpan?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5529 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5530
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5531 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5532
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5533 #region UInt16?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5534
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5535 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5536 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5537 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5538 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5539 public static UInt16? ToNullableUInt16(Boolean p) { return p ? (UInt16?)1 : (UInt16?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5540 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5541 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5542 public static UInt16? ToNullableUInt16(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5543 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5544 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5545 public static UInt16? ToNullableUInt16(Char p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5546 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5547 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5548 public static UInt16? ToNullableUInt16(Decimal p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5549 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5550 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5551 public static UInt16? ToNullableUInt16(Double p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5552 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5553 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5554 public static UInt16? ToNullableUInt16(Int16 p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5555 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5556 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5557 public static UInt16? ToNullableUInt16(Int32 p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5558 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5559 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5560 public static UInt16? ToNullableUInt16(Int64 p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5561 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5562 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5563 public static UInt16? ToNullableUInt16(SByte p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5564 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5565 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5566 public static UInt16? ToNullableUInt16(Single p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5567 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5568 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5569 public static UInt16? ToNullableUInt16(String p) { return p == null? (UInt16?)null : UInt16.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5570 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5571 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5572 public static UInt16? ToNullableUInt16(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5573 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5574 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5575 public static UInt16? ToNullableUInt16(UInt32 p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5576 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5577 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5578 public static UInt16? ToNullableUInt16(UInt64 p) { return checked((UInt16?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5579
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5580 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5581 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5582 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5583 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5584 public static UInt16? ToNullableUInt16(Boolean? p) { return p.HasValue && p.Value ? (UInt16?)1: (UInt16?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5585 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5586 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5587 public static UInt16? ToNullableUInt16(Byte? p) { return p.HasValue ? p.Value : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5588 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5589 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5590 public static UInt16? ToNullableUInt16(Char? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5591 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5592 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5593 public static UInt16? ToNullableUInt16(Decimal? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5594 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5595 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5596 public static UInt16? ToNullableUInt16(Double? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5597 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5598 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5599 public static UInt16? ToNullableUInt16(Int16? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5600 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5601 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5602 public static UInt16? ToNullableUInt16(Int32? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5603 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5604 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5605 public static UInt16? ToNullableUInt16(Int64? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5606 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5607 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5608 public static UInt16? ToNullableUInt16(SByte? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5609 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5610 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5611 public static UInt16? ToNullableUInt16(Single? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5612 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5613 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5614 public static UInt16? ToNullableUInt16(UInt32? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5615 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5616 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5617 public static UInt16? ToNullableUInt16(UInt64? p) { return p.HasValue ? checked((UInt16?)p.Value) : (UInt16?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5618
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5619 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5620 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5621 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5622 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5623 public static UInt16? ToNullableUInt16(Binary p) { return p == null || p.Length == 0 ? (UInt16?)null : BitConverter.ToUInt16(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5624 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5625 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5626 public static UInt16? ToNullableUInt16(Byte[] p) { return p == null || p.Length == 0 ? (UInt16?)null : BitConverter.ToUInt16(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5627
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5628 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5629
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5630 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5631 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5632 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5633 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5634 public static UInt16? ToNullableUInt16(SqlBoolean p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5635 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5636 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5637 public static UInt16? ToNullableUInt16(SqlByte p) { return p.IsNull ? (UInt16?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5638 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5639 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5640 public static UInt16? ToNullableUInt16(SqlDecimal p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5641 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5642 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5643 public static UInt16? ToNullableUInt16(SqlDouble p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5644 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5645 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5646 public static UInt16? ToNullableUInt16(SqlInt16 p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5647 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5648 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5649 public static UInt16? ToNullableUInt16(SqlInt32 p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5650 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5651 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5652 public static UInt16? ToNullableUInt16(SqlInt64 p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5653 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5654 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5655 public static UInt16? ToNullableUInt16(SqlMoney p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5656 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5657 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5658 public static UInt16? ToNullableUInt16(SqlSingle p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5659 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5660 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5661 public static UInt16? ToNullableUInt16(SqlString p) { return p.IsNull ? (UInt16?)null : ToUInt16(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5662
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5663 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5664
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5665 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5666 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5667 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt16?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5668 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5669 public static UInt16? ToNullableUInt16(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5670 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5671 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5672
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5673 if (p is UInt16?) return (UInt16?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5674
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5675 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5676
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5677 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5678 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5679 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5680 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5681 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5682 case TypeCode.UInt16 : return ToNullableUInt16((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5683 case TypeCode.Byte : return ToNullableUInt16((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5684 case TypeCode.SByte : return ToNullableUInt16((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5685 case TypeCode.Int16 : return ToNullableUInt16((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5686 case TypeCode.Int32 : return ToNullableUInt16((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5687 case TypeCode.Int64 : return ToNullableUInt16((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5688 case TypeCode.UInt32 : return ToNullableUInt16((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5689 case TypeCode.UInt64 : return ToNullableUInt16((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5690 case TypeCode.Single : return ToNullableUInt16((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5691 case TypeCode.Double : return ToNullableUInt16((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5692 case TypeCode.Decimal : return ToNullableUInt16((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5693 case TypeCode.Char : return ToNullableUInt16((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5694 case TypeCode.String : return ToNullableUInt16((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5695 case TypeCode.Boolean : return ToNullableUInt16((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5696 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5697
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5698 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5699 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5700 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5701 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5702 if (p is Boolean?) return ToNullableUInt16((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5703 if (p is Byte?) return ToNullableUInt16((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5704 if (p is Char?) return ToNullableUInt16((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5705 if (p is Decimal?) return ToNullableUInt16((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5706 if (p is Double?) return ToNullableUInt16((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5707 if (p is Int16?) return ToNullableUInt16((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5708 if (p is Int32?) return ToNullableUInt16((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5709 if (p is Int64?) return ToNullableUInt16((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5710 if (p is SByte?) return ToNullableUInt16((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5711 if (p is Single?) return ToNullableUInt16((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5712 if (p is UInt32?) return ToNullableUInt16((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5713 if (p is UInt64?) return ToNullableUInt16((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5714 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5715
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5716 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5717 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5718 if (p is Binary) return ToNullableUInt16((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5719 if (p is Byte[]) return ToNullableUInt16((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5720
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5721 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5722
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5723 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5724 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5725 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5726 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5727 if (p is SqlBoolean) return ToNullableUInt16((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5728 if (p is SqlByte) return ToNullableUInt16((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5729 if (p is SqlDecimal) return ToNullableUInt16((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5730 if (p is SqlDouble) return ToNullableUInt16((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5731 if (p is SqlInt16) return ToNullableUInt16((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5732 if (p is SqlInt32) return ToNullableUInt16((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5733 if (p is SqlInt64) return ToNullableUInt16((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5734 if (p is SqlMoney) return ToNullableUInt16((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5735 if (p is SqlSingle) return ToNullableUInt16((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5736 if (p is SqlString) return ToNullableUInt16((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5737 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5738
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5739 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5740
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5741 throw CreateInvalidCastException(p.GetType(), typeof(UInt16?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5742 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5743
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5744 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5745
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5746 #region UInt32?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5747
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5748 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5749 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5750 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5751 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5752 public static UInt32? ToNullableUInt32(Boolean p) { return p ? (UInt32?)1 : (UInt32?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5753 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5754 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5755 public static UInt32? ToNullableUInt32(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5756 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5757 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5758 public static UInt32? ToNullableUInt32(Char p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5759 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5760 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5761 public static UInt32? ToNullableUInt32(Decimal p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5762 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5763 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5764 public static UInt32? ToNullableUInt32(Double p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5765 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5766 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5767 public static UInt32? ToNullableUInt32(Int16 p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5768 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5769 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5770 public static UInt32? ToNullableUInt32(Int32 p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5771 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5772 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5773 public static UInt32? ToNullableUInt32(Int64 p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5774 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5775 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5776 public static UInt32? ToNullableUInt32(SByte p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5777 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5778 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5779 public static UInt32? ToNullableUInt32(Single p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5780 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5781 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5782 public static UInt32? ToNullableUInt32(String p) { return p == null? (UInt32?)null : UInt32.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5783 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5784 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5785 public static UInt32? ToNullableUInt32(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5786 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5787 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5788 public static UInt32? ToNullableUInt32(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5789 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5790 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5791 public static UInt32? ToNullableUInt32(UInt64 p) { return checked((UInt32?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5792
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5793 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5794 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5795 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5796 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5797 public static UInt32? ToNullableUInt32(Boolean? p) { return p.HasValue && p.Value ? (UInt32?)1: (UInt32?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5798 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5799 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5800 public static UInt32? ToNullableUInt32(Byte? p) { return p.HasValue ? p.Value : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5801 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5802 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5803 public static UInt32? ToNullableUInt32(Char? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5804 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5805 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5806 public static UInt32? ToNullableUInt32(Decimal? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5807 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5808 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5809 public static UInt32? ToNullableUInt32(Double? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5810 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5811 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5812 public static UInt32? ToNullableUInt32(Int16? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5813 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5814 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5815 public static UInt32? ToNullableUInt32(Int32? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5816 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5817 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5818 public static UInt32? ToNullableUInt32(Int64? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5819 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5820 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5821 public static UInt32? ToNullableUInt32(SByte? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5822 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5823 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5824 public static UInt32? ToNullableUInt32(Single? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5825 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5826 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5827 public static UInt32? ToNullableUInt32(UInt16? p) { return p.HasValue ? p.Value : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5828 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5829 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5830 public static UInt32? ToNullableUInt32(UInt64? p) { return p.HasValue ? checked((UInt32?)p.Value) : (UInt32?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5831
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5832 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5833 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5834 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5835 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5836 public static UInt32? ToNullableUInt32(Binary p) { return p == null || p.Length == 0 ? (UInt32?)null : BitConverter.ToUInt32(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5837 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5838 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5839 public static UInt32? ToNullableUInt32(Byte[] p) { return p == null || p.Length == 0 ? (UInt32?)null : BitConverter.ToUInt32(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5840
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5841 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5842
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5843 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5844 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5845 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5846 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5847 public static UInt32? ToNullableUInt32(SqlBoolean p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5848 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5849 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5850 public static UInt32? ToNullableUInt32(SqlByte p) { return p.IsNull ? (UInt32?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5851 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5852 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5853 public static UInt32? ToNullableUInt32(SqlDecimal p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5854 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5855 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5856 public static UInt32? ToNullableUInt32(SqlDouble p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5857 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5858 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5859 public static UInt32? ToNullableUInt32(SqlInt16 p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5860 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5861 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5862 public static UInt32? ToNullableUInt32(SqlInt32 p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5863 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5864 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5865 public static UInt32? ToNullableUInt32(SqlInt64 p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5866 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5867 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5868 public static UInt32? ToNullableUInt32(SqlMoney p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5869 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5870 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5871 public static UInt32? ToNullableUInt32(SqlSingle p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5872 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5873 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5874 public static UInt32? ToNullableUInt32(SqlString p) { return p.IsNull ? (UInt32?)null : ToUInt32(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5875
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5876 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5877
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5878 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5879 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5880 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt32?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5881 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5882 public static UInt32? ToNullableUInt32(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5883 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5884 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5885
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5886 if (p is UInt32?) return (UInt32?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5887
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5888 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5889
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5890 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5891 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5892 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5893 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5894 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5895 case TypeCode.Byte : return ToNullableUInt32((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5896 case TypeCode.UInt16 : return ToNullableUInt32((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5897 case TypeCode.UInt32 : return ToNullableUInt32((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5898 case TypeCode.SByte : return ToNullableUInt32((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5899 case TypeCode.Int16 : return ToNullableUInt32((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5900 case TypeCode.Int32 : return ToNullableUInt32((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5901 case TypeCode.Int64 : return ToNullableUInt32((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5902 case TypeCode.UInt64 : return ToNullableUInt32((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5903 case TypeCode.Single : return ToNullableUInt32((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5904 case TypeCode.Double : return ToNullableUInt32((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5905 case TypeCode.Decimal : return ToNullableUInt32((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5906 case TypeCode.Char : return ToNullableUInt32((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5907 case TypeCode.String : return ToNullableUInt32((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5908 case TypeCode.Boolean : return ToNullableUInt32((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5909 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5910
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5911 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5912 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5913 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5914 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5915 if (p is Boolean?) return ToNullableUInt32((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5916 if (p is Byte?) return ToNullableUInt32((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5917 if (p is Char?) return ToNullableUInt32((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5918 if (p is Decimal?) return ToNullableUInt32((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5919 if (p is Double?) return ToNullableUInt32((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5920 if (p is Int16?) return ToNullableUInt32((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5921 if (p is Int32?) return ToNullableUInt32((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5922 if (p is Int64?) return ToNullableUInt32((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5923 if (p is SByte?) return ToNullableUInt32((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5924 if (p is Single?) return ToNullableUInt32((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5925 if (p is UInt16?) return ToNullableUInt32((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5926 if (p is UInt64?) return ToNullableUInt32((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5927 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5928
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5929 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5930 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5931 if (p is Binary) return ToNullableUInt32((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5932 if (p is Byte[]) return ToNullableUInt32((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5933
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5934 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5935
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5936 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5937 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5938 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5939 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5940 if (p is SqlBoolean) return ToNullableUInt32((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5941 if (p is SqlByte) return ToNullableUInt32((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5942 if (p is SqlDecimal) return ToNullableUInt32((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5943 if (p is SqlDouble) return ToNullableUInt32((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5944 if (p is SqlInt16) return ToNullableUInt32((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5945 if (p is SqlInt32) return ToNullableUInt32((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5946 if (p is SqlInt64) return ToNullableUInt32((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5947 if (p is SqlMoney) return ToNullableUInt32((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5948 if (p is SqlSingle) return ToNullableUInt32((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5949 if (p is SqlString) return ToNullableUInt32((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5950 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5951
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5952 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5953
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5954 throw CreateInvalidCastException(p.GetType(), typeof(UInt32?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5955 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5956
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5957 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5958
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5959 #region UInt64?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5960
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5961 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5962 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5963 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5964 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5965 public static UInt64? ToNullableUInt64(Boolean p) { return p ? (UInt64?)1 : (UInt64?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5966 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5967 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5968 public static UInt64? ToNullableUInt64(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5969 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5970 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5971 public static UInt64? ToNullableUInt64(Char p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5972 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5973 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5974 public static UInt64? ToNullableUInt64(Decimal p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5975 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5976 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5977 public static UInt64? ToNullableUInt64(Double p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5978 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5979 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5980 public static UInt64? ToNullableUInt64(Int16 p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5981 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5982 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5983 public static UInt64? ToNullableUInt64(Int32 p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5984 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5985 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5986 public static UInt64? ToNullableUInt64(Int64 p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5987 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5988 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5989 public static UInt64? ToNullableUInt64(SByte p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5990 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5991 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5992 public static UInt64? ToNullableUInt64(Single p) { return checked((UInt64?)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5993 /// <summary>Converts the value from <c>String</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5994 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5995 public static UInt64? ToNullableUInt64(String p) { return p == null? (UInt64?)null : UInt64.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5996 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5997 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5998 public static UInt64? ToNullableUInt64(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5999 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6000 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6001 public static UInt64? ToNullableUInt64(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6002 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6003 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6004 public static UInt64? ToNullableUInt64(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6005
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6006 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6007 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6008 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6009 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6010 public static UInt64? ToNullableUInt64(Boolean? p) { return p.HasValue && p.Value ? (UInt64?)1: (UInt64?)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6011 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6012 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6013 public static UInt64? ToNullableUInt64(Byte? p) { return p.HasValue ? p.Value : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6014 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6015 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6016 public static UInt64? ToNullableUInt64(Char? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6017 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6018 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6019 public static UInt64? ToNullableUInt64(Decimal? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6020 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6021 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6022 public static UInt64? ToNullableUInt64(Double? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6023 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6024 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6025 public static UInt64? ToNullableUInt64(Int16? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6026 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6027 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6028 public static UInt64? ToNullableUInt64(Int32? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6029 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6030 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6031 public static UInt64? ToNullableUInt64(Int64? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6032 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6033 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6034 public static UInt64? ToNullableUInt64(SByte? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6035 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6036 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6037 public static UInt64? ToNullableUInt64(Single? p) { return p.HasValue ? checked((UInt64?)p.Value) : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6038 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6039 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6040 public static UInt64? ToNullableUInt64(UInt16? p) { return p.HasValue ? p.Value : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6041 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6042 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6043 public static UInt64? ToNullableUInt64(UInt32? p) { return p.HasValue ? p.Value : (UInt64?)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6044
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6045 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6046 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6047 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6048 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6049 public static UInt64? ToNullableUInt64(Binary p) { return p == null || p.Length == 0 ? (UInt64?)null : BitConverter.ToUInt64(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6050 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6051 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6052 public static UInt64? ToNullableUInt64(Byte[] p) { return p == null || p.Length == 0 ? (UInt64?)null : BitConverter.ToUInt64(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6053
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6054 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6055
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6056 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6057 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6058 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6059 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6060 public static UInt64? ToNullableUInt64(SqlBoolean p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6061 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6062 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6063 public static UInt64? ToNullableUInt64(SqlByte p) { return p.IsNull ? (UInt64?)null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6064 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6065 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6066 public static UInt64? ToNullableUInt64(SqlDecimal p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6067 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6068 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6069 public static UInt64? ToNullableUInt64(SqlDouble p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6070 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6071 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6072 public static UInt64? ToNullableUInt64(SqlInt16 p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6073 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6074 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6075 public static UInt64? ToNullableUInt64(SqlInt32 p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6076 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6077 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6078 public static UInt64? ToNullableUInt64(SqlInt64 p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6079 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6080 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6081 public static UInt64? ToNullableUInt64(SqlMoney p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6082 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6083 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6084 public static UInt64? ToNullableUInt64(SqlSingle p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6085 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6086 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6087 public static UInt64? ToNullableUInt64(SqlString p) { return p.IsNull ? (UInt64?)null : ToUInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6088
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6089 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6090
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6091 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6092 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6093 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>UInt64?</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6094 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6095 public static UInt64? ToNullableUInt64(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6096 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6097 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6098
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6099 if (p is UInt64?) return (UInt64?)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6100
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6101 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6103 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6104 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6105 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6106 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6107 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6108 case TypeCode.Byte : return ToNullableUInt64((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6109 case TypeCode.UInt16 : return ToNullableUInt64((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6110 case TypeCode.UInt32 : return ToNullableUInt64((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6111 case TypeCode.UInt64 : return ToNullableUInt64((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6112 case TypeCode.SByte : return ToNullableUInt64((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6113 case TypeCode.Int16 : return ToNullableUInt64((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6114 case TypeCode.Int32 : return ToNullableUInt64((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6115 case TypeCode.Int64 : return ToNullableUInt64((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6116 case TypeCode.Single : return ToNullableUInt64((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6117 case TypeCode.Double : return ToNullableUInt64((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6118 case TypeCode.Decimal : return ToNullableUInt64((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6119 case TypeCode.Char : return ToNullableUInt64((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6120 case TypeCode.String : return ToNullableUInt64((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6121 case TypeCode.Boolean : return ToNullableUInt64((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6122 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6124 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6125 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6126 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6127 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6128 if (p is Boolean?) return ToNullableUInt64((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6129 if (p is Byte?) return ToNullableUInt64((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6130 if (p is Char?) return ToNullableUInt64((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6131 if (p is Decimal?) return ToNullableUInt64((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6132 if (p is Double?) return ToNullableUInt64((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6133 if (p is Int16?) return ToNullableUInt64((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6134 if (p is Int32?) return ToNullableUInt64((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6135 if (p is Int64?) return ToNullableUInt64((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6136 if (p is SByte?) return ToNullableUInt64((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6137 if (p is Single?) return ToNullableUInt64((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6138 if (p is UInt16?) return ToNullableUInt64((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6139 if (p is UInt32?) return ToNullableUInt64((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6140 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6141
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6142 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6143 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6144 if (p is Binary) return ToNullableUInt64((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6145 if (p is Byte[]) return ToNullableUInt64((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6146
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6147 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6148
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6149 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6150 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6151 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6152 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6153 if (p is SqlBoolean) return ToNullableUInt64((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6154 if (p is SqlByte) return ToNullableUInt64((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6155 if (p is SqlDecimal) return ToNullableUInt64((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6156 if (p is SqlDouble) return ToNullableUInt64((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6157 if (p is SqlInt16) return ToNullableUInt64((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6158 if (p is SqlInt32) return ToNullableUInt64((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6159 if (p is SqlInt64) return ToNullableUInt64((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6160 if (p is SqlMoney) return ToNullableUInt64((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6161 if (p is SqlSingle) return ToNullableUInt64((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6162 if (p is SqlString) return ToNullableUInt64((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6163 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6164
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6165 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6166
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6167 throw CreateInvalidCastException(p.GetType(), typeof(UInt64?));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6168 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6169
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6170 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6171
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6172 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6173
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6174 #region Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6175
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6176 #region SqlBinary
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6177
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6178 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6179
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6180 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6181 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6182 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlBinary</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6183 public static SqlBinary ToSqlBinary(Guid p) { return p == Guid.Empty? SqlBinary.Null : new SqlGuid(p).ToSqlBinary(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6184
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6185 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6186 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6187 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlBinary</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6188 public static SqlBinary ToSqlBinary(Guid? p) { return p.HasValue ? new SqlGuid(p.Value).ToSqlBinary(): SqlBinary.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6189
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6190 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6191 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6192 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>SqlBinary</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6193 public static SqlBinary ToSqlBinary(SqlBytes p) { return p.ToSqlBinary(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6194 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>SqlBinary</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6195 public static SqlBinary ToSqlBinary(SqlGuid p) { return p.ToSqlBinary(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6196
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6197 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6198 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6199 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlBinary</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6200 public static SqlBinary ToSqlBinary(Binary p) { return p == null ? SqlBinary.Null : p.ToArray(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6201 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlBinary</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6202 public static SqlBinary ToSqlBinary(Byte[] p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6203
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6204 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6205 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6206 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlBinary</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6207 public static SqlBinary ToSqlBinary(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6208 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6209 if (p == null || p is DBNull) return SqlBinary.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6210
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6211 if (p is SqlBinary) return (SqlBinary)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6212
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6213 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6214 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6215 if (p is Guid) return ToSqlBinary((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6216
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6217 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6218 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6219 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6220
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6221 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6222 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6223 if (p is Guid?) return ToSqlBinary((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6224 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6225
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6226 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6227 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6228 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6229 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6230 if (p is SqlBytes) return ToSqlBinary((SqlBytes)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6231 if (p is SqlGuid) return ToSqlBinary((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6232 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6233
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6234 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6235 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6236 if (p is Binary) return ToSqlBinary((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6237 if (p is Byte[]) return ToSqlBinary((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6238
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6239 throw CreateInvalidCastException(p.GetType(), typeof(SqlBinary));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6240 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6241
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6242 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6243
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6244 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6245
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6246 #region SqlBoolean
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6247
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6248 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6249
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6250 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6251 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6252 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6253 public static SqlBoolean ToSqlBoolean(Boolean p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6254 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6255 public static SqlBoolean ToSqlBoolean(Byte p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6256 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6257 public static SqlBoolean ToSqlBoolean(Char p) { return ToBoolean(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6258 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6259 public static SqlBoolean ToSqlBoolean(Decimal p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6260 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6261 public static SqlBoolean ToSqlBoolean(Double p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6262 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6263 public static SqlBoolean ToSqlBoolean(Int16 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6264 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6265 public static SqlBoolean ToSqlBoolean(Int32 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6266 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6267 public static SqlBoolean ToSqlBoolean(Int64 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6268 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6269 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6270 public static SqlBoolean ToSqlBoolean(SByte p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6271 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6272 public static SqlBoolean ToSqlBoolean(Single p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6273 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6274 public static SqlBoolean ToSqlBoolean(String p) { return p == null? SqlBoolean.Null : p.Length == 1 ? ToBoolean(p[0]) : Boolean.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6275 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6276 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6277 public static SqlBoolean ToSqlBoolean(UInt16 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6278 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6279 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6280 public static SqlBoolean ToSqlBoolean(UInt32 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6281 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6282 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6283 public static SqlBoolean ToSqlBoolean(UInt64 p) { return p != 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6284
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6285 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6286 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6287 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6288 public static SqlBoolean ToSqlBoolean(Boolean? p) { return p.HasValue ? p.Value : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6289 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6290 public static SqlBoolean ToSqlBoolean(Byte? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6291 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6292 public static SqlBoolean ToSqlBoolean(Char? p) { return p.HasValue && ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6293 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6294 public static SqlBoolean ToSqlBoolean(Decimal? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6295 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6296 public static SqlBoolean ToSqlBoolean(Double? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6297 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6298 public static SqlBoolean ToSqlBoolean(Int16? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6299 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6300 public static SqlBoolean ToSqlBoolean(Int32? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6301 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6302 public static SqlBoolean ToSqlBoolean(Int64? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6303 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6304 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6305 public static SqlBoolean ToSqlBoolean(SByte? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6306 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6307 public static SqlBoolean ToSqlBoolean(Single? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6308 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6309 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6310 public static SqlBoolean ToSqlBoolean(UInt16? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6311 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6312 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6313 public static SqlBoolean ToSqlBoolean(UInt32? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6314 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6315 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6316 public static SqlBoolean ToSqlBoolean(UInt64? p) { return p.HasValue ? p.Value != 0 : SqlBoolean.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6317
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6318 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6319 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6320 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6321 public static SqlBoolean ToSqlBoolean(SqlByte p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6322 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6323 public static SqlBoolean ToSqlBoolean(SqlDecimal p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6324 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6325 public static SqlBoolean ToSqlBoolean(SqlDouble p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6326 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6327 public static SqlBoolean ToSqlBoolean(SqlInt16 p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6328 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6329 public static SqlBoolean ToSqlBoolean(SqlInt32 p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6330 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6331 public static SqlBoolean ToSqlBoolean(SqlInt64 p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6332 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6333 public static SqlBoolean ToSqlBoolean(SqlMoney p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6334 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6335 public static SqlBoolean ToSqlBoolean(SqlSingle p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6336 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6337 public static SqlBoolean ToSqlBoolean(SqlString p) { return p.IsNull ? SqlBoolean.Null : ToBoolean(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6338
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6339 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6340 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6341 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6342 public static SqlBoolean ToSqlBoolean(Binary p) { return p == null || p.Length == 0 ? SqlBoolean.Null : BitConverter.ToBoolean(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6343 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6344 public static SqlBoolean ToSqlBoolean(Byte[] p) { return p == null || p.Length == 0 ? SqlBoolean.Null : BitConverter.ToBoolean(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6345
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6346 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6347 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6348 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlBoolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6349 public static SqlBoolean ToSqlBoolean(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6350 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6351 if (p == null) return SqlBoolean.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6352
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6353 if (p is SqlBoolean) return (SqlBoolean)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6354
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6355 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6356
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6357 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6358 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6359 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6360 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6361 case TypeCode.DBNull : return SqlBoolean.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6362 case TypeCode.String : return ToSqlBoolean((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6363 case TypeCode.Boolean : return ToSqlBoolean((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6364 case TypeCode.Char : return ToSqlBoolean((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6365 case TypeCode.SByte : return ToSqlBoolean((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6366 case TypeCode.Int16 : return ToSqlBoolean((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6367 case TypeCode.Int32 : return ToSqlBoolean((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6368 case TypeCode.Int64 : return ToSqlBoolean((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6369 case TypeCode.Byte : return ToSqlBoolean((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6370 case TypeCode.UInt16 : return ToSqlBoolean((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6371 case TypeCode.UInt32 : return ToSqlBoolean((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6372 case TypeCode.UInt64 : return ToSqlBoolean((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6373 case TypeCode.Single : return ToSqlBoolean((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6374 case TypeCode.Double : return ToSqlBoolean((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6375 case TypeCode.Decimal : return ToSqlBoolean((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6376 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6377
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6378 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6379 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6380 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6381 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6382 if (p is Boolean?) return ToSqlBoolean((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6383 if (p is Byte?) return ToSqlBoolean((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6384 if (p is Char?) return ToSqlBoolean((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6385 if (p is Decimal?) return ToSqlBoolean((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6386 if (p is Double?) return ToSqlBoolean((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6387 if (p is Int16?) return ToSqlBoolean((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6388 if (p is Int32?) return ToSqlBoolean((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6389 if (p is Int64?) return ToSqlBoolean((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6390 if (p is SByte?) return ToSqlBoolean((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6391 if (p is Single?) return ToSqlBoolean((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6392 if (p is UInt16?) return ToSqlBoolean((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6393 if (p is UInt32?) return ToSqlBoolean((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6394 if (p is UInt64?) return ToSqlBoolean((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6395 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6396
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6397 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6398 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6399 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6400 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6401 if (p is SqlByte) return ToSqlBoolean((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6402 if (p is SqlDecimal) return ToSqlBoolean((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6403 if (p is SqlDouble) return ToSqlBoolean((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6404 if (p is SqlInt16) return ToSqlBoolean((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6405 if (p is SqlInt32) return ToSqlBoolean((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6406 if (p is SqlInt64) return ToSqlBoolean((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6407 if (p is SqlMoney) return ToSqlBoolean((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6408 if (p is SqlSingle) return ToSqlBoolean((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6409 if (p is SqlString) return ToSqlBoolean((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6410 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6411
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6412 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6413 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6414 if (p is Binary) return ToSqlBoolean((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6415 if (p is Byte[]) return ToSqlBoolean((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6416
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6417 throw CreateInvalidCastException(p.GetType(), typeof(SqlBoolean));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6418 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6419
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6420 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6421
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6422 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6423
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6424 #region SqlByte
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6425
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6426 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6427
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6428 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6429 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6430 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6431 public static SqlByte ToSqlByte(Boolean p) { return p ? (SqlByte)1 : (SqlByte)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6432 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6433 public static SqlByte ToSqlByte(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6434 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6435 public static SqlByte ToSqlByte(Char p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6436 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6437 public static SqlByte ToSqlByte(Decimal p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6438 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6439 public static SqlByte ToSqlByte(Double p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6440 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6441 public static SqlByte ToSqlByte(Int16 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6442 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6443 public static SqlByte ToSqlByte(Int32 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6444 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6445 public static SqlByte ToSqlByte(Int64 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6446 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6447 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6448 public static SqlByte ToSqlByte(SByte p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6449 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6450 public static SqlByte ToSqlByte(Single p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6451 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6452 public static SqlByte ToSqlByte(String p) { return p == null? SqlByte.Null : Byte.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6453 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6454 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6455 public static SqlByte ToSqlByte(UInt16 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6456 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6457 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6458 public static SqlByte ToSqlByte(UInt32 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6459 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6460 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6461 public static SqlByte ToSqlByte(UInt64 p) { return checked((Byte)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6462
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6463 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6464 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6465 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6466 public static SqlByte ToSqlByte(Boolean? p) { return p.HasValue && p.Value ? (SqlByte)1: (SqlByte)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6467 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6468 public static SqlByte ToSqlByte(Byte? p) { return p.HasValue ? p.Value : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6469 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6470 public static SqlByte ToSqlByte(Char? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6471 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6472 public static SqlByte ToSqlByte(Decimal? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6473 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6474 public static SqlByte ToSqlByte(Double? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6475 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6476 public static SqlByte ToSqlByte(Int16? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6477 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6478 public static SqlByte ToSqlByte(Int32? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6479 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6480 public static SqlByte ToSqlByte(Int64? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6481 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6482 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6483 public static SqlByte ToSqlByte(SByte? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6484 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6485 public static SqlByte ToSqlByte(Single? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6486 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6487 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6488 public static SqlByte ToSqlByte(UInt16? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6489 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6490 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6491 public static SqlByte ToSqlByte(UInt32? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6492 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6493 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6494 public static SqlByte ToSqlByte(UInt64? p) { return p.HasValue ? checked((Byte)p.Value) : SqlByte.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6495
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6496 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6497 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6498 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6499 public static SqlByte ToSqlByte(SqlBoolean p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6500 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6501 public static SqlByte ToSqlByte(SqlDecimal p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6502 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6503 public static SqlByte ToSqlByte(SqlDouble p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6504 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6505 public static SqlByte ToSqlByte(SqlInt16 p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6506 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6507 public static SqlByte ToSqlByte(SqlInt32 p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6508 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6509 public static SqlByte ToSqlByte(SqlInt64 p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6510 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6511 public static SqlByte ToSqlByte(SqlMoney p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6512 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6513 public static SqlByte ToSqlByte(SqlSingle p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6514 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6515 public static SqlByte ToSqlByte(SqlString p) { return p.ToSqlByte(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6516
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6517 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6518 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6519 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6520 public static SqlByte ToSqlByte(Binary p) { return p == null || p.Length == 0 ? SqlByte.Null : p.ToArray()[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6521 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6522 public static SqlByte ToSqlByte(Byte[] p) { return p == null || p.Length == 0 ? SqlByte.Null : p[0]; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6523
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6524 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6525 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6526 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlByte</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6527 public static SqlByte ToSqlByte(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6528 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6529 if (p == null) return SqlByte.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6530
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6531 if (p is SqlByte) return (SqlByte)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6532
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6533 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6534
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6535 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6536 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6537 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6538 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6539 case TypeCode.DBNull : return SqlByte.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6540 case TypeCode.Byte : return ToSqlByte((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6541 case TypeCode.SByte : return ToSqlByte((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6542 case TypeCode.Int16 : return ToSqlByte((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6543 case TypeCode.Int32 : return ToSqlByte((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6544 case TypeCode.Int64 : return ToSqlByte((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6545 case TypeCode.UInt16 : return ToSqlByte((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6546 case TypeCode.UInt32 : return ToSqlByte((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6547 case TypeCode.UInt64 : return ToSqlByte((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6548 case TypeCode.Single : return ToSqlByte((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6549 case TypeCode.Double : return ToSqlByte((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6550 case TypeCode.Decimal : return ToSqlByte((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6551 case TypeCode.Char : return ToSqlByte((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6552 case TypeCode.String : return ToSqlByte((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6553 case TypeCode.Boolean : return ToSqlByte((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6554 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6555
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6556 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6557 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6558 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6559 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6560 if (p is Boolean?) return ToSqlByte((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6561 if (p is Byte?) return ToSqlByte((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6562 if (p is Char?) return ToSqlByte((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6563 if (p is Decimal?) return ToSqlByte((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6564 if (p is Double?) return ToSqlByte((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6565 if (p is Int16?) return ToSqlByte((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6566 if (p is Int32?) return ToSqlByte((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6567 if (p is Int64?) return ToSqlByte((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6568 if (p is SByte?) return ToSqlByte((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6569 if (p is Single?) return ToSqlByte((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6570 if (p is UInt16?) return ToSqlByte((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6571 if (p is UInt32?) return ToSqlByte((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6572 if (p is UInt64?) return ToSqlByte((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6573 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6574
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6575 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6576 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6577 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6578 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6579 if (p is SqlBoolean) return ToSqlByte((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6580 if (p is SqlDecimal) return ToSqlByte((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6581 if (p is SqlDouble) return ToSqlByte((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6582 if (p is SqlInt16) return ToSqlByte((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6583 if (p is SqlInt32) return ToSqlByte((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6584 if (p is SqlInt64) return ToSqlByte((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6585 if (p is SqlMoney) return ToSqlByte((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6586 if (p is SqlSingle) return ToSqlByte((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6587 if (p is SqlString) return ToSqlByte((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6588 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6589
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6590 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6591 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6592 if (p is Binary) return ToSqlByte((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6593 if (p is Byte[]) return ToSqlByte((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6594
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6595 throw CreateInvalidCastException(p.GetType(), typeof(SqlByte));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6596 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6597
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6598 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6599
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6600 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6601
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6602 #region SqlBytes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6603
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6604 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6605
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6606 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6607 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6608 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6609 public static SqlBytes ToSqlBytes(Boolean p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6610 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6611 public static SqlBytes ToSqlBytes(Byte p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6612 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6613 public static SqlBytes ToSqlBytes(Char p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6614 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6615 public static SqlBytes ToSqlBytes(DateTime p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6616 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6617 public static SqlBytes ToSqlBytes(DateTimeOffset p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6618 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6619 public static SqlBytes ToSqlBytes(Double p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6620 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6621 public static SqlBytes ToSqlBytes(Guid p) { return p == Guid.Empty ? SqlBytes.Null: new SqlBytes(p.ToByteArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6622 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6623 public static SqlBytes ToSqlBytes(Int16 p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6624 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6625 public static SqlBytes ToSqlBytes(Int32 p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6626 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6627 public static SqlBytes ToSqlBytes(Int64 p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6628 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6629 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6630 public static SqlBytes ToSqlBytes(SByte p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6631 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6632 public static SqlBytes ToSqlBytes(Single p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6633 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6634 public static SqlBytes ToSqlBytes(String p) { return p == null ? SqlBytes.Null : new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6635 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6636 public static SqlBytes ToSqlBytes(TimeSpan p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6637 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6638 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6639 public static SqlBytes ToSqlBytes(UInt16 p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6640 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6641 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6642 public static SqlBytes ToSqlBytes(UInt32 p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6643 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6644 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6645 public static SqlBytes ToSqlBytes(UInt64 p) { return new SqlBytes(ToByteArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6646
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6647 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6648 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6649 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6650 public static SqlBytes ToSqlBytes(Boolean? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6651 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6652 public static SqlBytes ToSqlBytes(Byte? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6653 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6654 public static SqlBytes ToSqlBytes(Char? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6655 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6656 public static SqlBytes ToSqlBytes(DateTime? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6657 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6658 public static SqlBytes ToSqlBytes(DateTimeOffset? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6659 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6660 public static SqlBytes ToSqlBytes(Decimal? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6661 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6662 public static SqlBytes ToSqlBytes(Double? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6663 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6664 public static SqlBytes ToSqlBytes(Guid? p) { return p.HasValue ? new SqlBytes(p.Value.ToByteArray()) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6665 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6666 public static SqlBytes ToSqlBytes(Int16? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6667 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6668 public static SqlBytes ToSqlBytes(Int32? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6669 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6670 public static SqlBytes ToSqlBytes(Int64? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6671 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6672 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6673 public static SqlBytes ToSqlBytes(SByte? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6674 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6675 public static SqlBytes ToSqlBytes(Single? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6676 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6677 public static SqlBytes ToSqlBytes(TimeSpan? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6678 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6679 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6680 public static SqlBytes ToSqlBytes(UInt16? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6681 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6682 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6683 public static SqlBytes ToSqlBytes(UInt32? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6684 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6685 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6686 public static SqlBytes ToSqlBytes(UInt64? p) { return p.HasValue ? ToSqlBytes(p.Value) : SqlBytes.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6687
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6688 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6689 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6690 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6691 public static SqlBytes ToSqlBytes(SqlBinary p) { return p.IsNull ? SqlBytes.Null : new SqlBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6692 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6693 public static SqlBytes ToSqlBytes(SqlGuid p) { return p.IsNull ? SqlBytes.Null : new SqlBytes(p.ToByteArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6694
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6695 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6696 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6697 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6698 public static SqlBytes ToSqlBytes(Binary p) { return p == null ? SqlBytes.Null : new SqlBytes(p.ToArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6699 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6700 public static SqlBytes ToSqlBytes(Byte[] p) { return p == null ? SqlBytes.Null : new SqlBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6701 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6702 public static SqlBytes ToSqlBytes(Stream p) { return p == null ? SqlBytes.Null : new SqlBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6703
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6704 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6705 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6706 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlBytes</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6707 public static SqlBytes ToSqlBytes(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6708 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6709 if (p == null) return SqlBytes.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6710
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6711 if (p is SqlBytes) return (SqlBytes)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6712
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6713 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6714
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6715 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6716 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6717 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6718 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6719 case TypeCode.DBNull : return SqlBytes.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6720 case TypeCode.String : return ToSqlBytes((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6721 case TypeCode.Byte : return ToSqlBytes((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6722 case TypeCode.SByte : return ToSqlBytes((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6723 case TypeCode.DateTime : return ToSqlBytes((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6724 case TypeCode.Int16 : return ToSqlBytes((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6725 case TypeCode.Int32 : return ToSqlBytes((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6726 case TypeCode.Int64 : return ToSqlBytes((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6727 case TypeCode.UInt16 : return ToSqlBytes((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6728 case TypeCode.UInt32 : return ToSqlBytes((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6729 case TypeCode.UInt64 : return ToSqlBytes((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6730 case TypeCode.Single : return ToSqlBytes((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6731 case TypeCode.Double : return ToSqlBytes((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6732 case TypeCode.Boolean : return ToSqlBytes((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6733 case TypeCode.Char : return ToSqlBytes((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6734 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6735
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6736 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6737 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6738 if (p is DateTimeOffset) return ToSqlBytes((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6739 if (p is Guid) return ToSqlBytes((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6740 if (p is TimeSpan) return ToSqlBytes((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6741
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6742 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6743 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6744 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6745 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6746 if (p is Boolean?) return ToSqlBytes((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6747 if (p is Byte?) return ToSqlBytes((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6748 if (p is Char?) return ToSqlBytes((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6749 if (p is DateTime?) return ToSqlBytes((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6750 if (p is DateTimeOffset?) return ToSqlBytes((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6751 if (p is Decimal?) return ToSqlBytes((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6752 if (p is Double?) return ToSqlBytes((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6753 if (p is Guid?) return ToSqlBytes((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6754 if (p is Int16?) return ToSqlBytes((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6755 if (p is Int32?) return ToSqlBytes((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6756 if (p is Int64?) return ToSqlBytes((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6757 if (p is SByte?) return ToSqlBytes((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6758 if (p is Single?) return ToSqlBytes((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6759 if (p is TimeSpan?) return ToSqlBytes((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6760 if (p is UInt16?) return ToSqlBytes((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6761 if (p is UInt32?) return ToSqlBytes((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6762 if (p is UInt64?) return ToSqlBytes((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6763 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6764
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6765 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6766 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6767 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6768 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6769 if (p is SqlBinary) return ToSqlBytes((SqlBinary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6770 if (p is SqlGuid) return ToSqlBytes((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6771 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6772
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6773 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6774 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6775 if (p is Binary) return ToSqlBytes((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6776 if (p is Byte[]) return ToSqlBytes((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6777 if (p is Stream) return ToSqlBytes((Stream) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6778
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6779 throw CreateInvalidCastException(p.GetType(), typeof(SqlBytes));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6780 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6781
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6782 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6783
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6784 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6785
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6786 #region SqlChars
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6787
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6788 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6789
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6790 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6791
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6792 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6793
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6794 #region SqlDateTime
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6795
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6796 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6797
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6798 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6799 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6800 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6801 public static SqlDateTime ToSqlDateTime(DateTime p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6802 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6803 public static SqlDateTime ToSqlDateTime(DateTimeOffset p) { return p.LocalDateTime; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6804 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6805 public static SqlDateTime ToSqlDateTime(Double p) { return DateTime.MinValue + TimeSpan.FromDays (p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6806 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6807 public static SqlDateTime ToSqlDateTime(Int64 p) { return DateTime.MinValue + TimeSpan.FromTicks(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6808 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6809 public static SqlDateTime ToSqlDateTime(String p) { return p == null ? SqlDateTime.Null : DateTime.Parse(p, null, DateTimeStyles.NoCurrentDateDefault); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6810 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6811 public static SqlDateTime ToSqlDateTime(TimeSpan p) { return DateTime.MinValue + p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6812
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6813 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6814 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6815 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6816 public static SqlDateTime ToSqlDateTime(DateTime? p) { return p.HasValue ? p.Value : SqlDateTime.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6817 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6818 public static SqlDateTime ToSqlDateTime(DateTimeOffset? p) { return p.HasValue ? p.Value.LocalDateTime : SqlDateTime.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6819 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6820 public static SqlDateTime ToSqlDateTime(Double? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromDays (p.Value): SqlDateTime.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6821 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6822 public static SqlDateTime ToSqlDateTime(Int64? p) { return p.HasValue ? DateTime.MinValue + TimeSpan.FromTicks(p.Value): SqlDateTime.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6823 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6824 public static SqlDateTime ToSqlDateTime(TimeSpan? p) { return p.HasValue ? DateTime.MinValue + p.Value : SqlDateTime.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6825
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6826 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6827 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6828 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6829 public static SqlDateTime ToSqlDateTime(SqlDouble p) { return p.IsNull ? SqlDateTime.Null : DateTime.MinValue + TimeSpan.FromDays (p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6830 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6831 public static SqlDateTime ToSqlDateTime(SqlInt64 p) { return p.IsNull ? SqlDateTime.Null : DateTime.MinValue + TimeSpan.FromTicks(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6832 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6833 public static SqlDateTime ToSqlDateTime(SqlString p) { return p.IsNull ? SqlDateTime.Null : ToDateTime(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6834
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6835 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6836 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6837 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6838 public static SqlDateTime ToSqlDateTime(Binary p) { return p == null || p.Length == 0 ? SqlDateTime.Null : DateTime.FromBinary(ToInt64(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6839 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6840 public static SqlDateTime ToSqlDateTime(Byte[] p) { return p == null || p.Length == 0 ? SqlDateTime.Null : DateTime.FromBinary(ToInt64(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6841
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6842 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6843 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6844 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlDateTime</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6845 public static SqlDateTime ToSqlDateTime(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6846 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6847 if (p == null) return SqlDateTime.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6848
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6849 if (p is SqlDateTime) return (SqlDateTime)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6850
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6851 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6852
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6853 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6854 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6855 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6856 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6857 case TypeCode.DBNull : return SqlDateTime.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6858 case TypeCode.DateTime : return ToSqlDateTime((DateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6859 case TypeCode.String : return ToSqlDateTime((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6860 case TypeCode.Int64 : return ToSqlDateTime((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6861 case TypeCode.Double : return ToSqlDateTime((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6862 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6863
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6864 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6865 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6866 if (p is DateTimeOffset) return ToSqlDateTime((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6867 if (p is TimeSpan) return ToSqlDateTime((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6868
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6869 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6870 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6871 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6872 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6873 if (p is DateTime?) return ToSqlDateTime((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6874 if (p is DateTimeOffset?) return ToSqlDateTime((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6875 if (p is Double?) return ToSqlDateTime((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6876 if (p is Int64?) return ToSqlDateTime((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6877 if (p is TimeSpan?) return ToSqlDateTime((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6878 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6879
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6880 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6881 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6882 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6883 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6884 if (p is SqlDouble) return ToSqlDateTime((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6885 if (p is SqlInt64) return ToSqlDateTime((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6886 if (p is SqlString) return ToSqlDateTime((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6887 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6888
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6889 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6890 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6891 if (p is Binary) return ToSqlDateTime((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6892 if (p is Byte[]) return ToSqlDateTime((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6893
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6894 throw CreateInvalidCastException(p.GetType(), typeof(SqlDateTime));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6895 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6896
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6897 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6898
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6899 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6900
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6901 #region SqlDecimal
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6902
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6903 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6904
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6905 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6906 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6907 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6908 public static SqlDecimal ToSqlDecimal(Boolean p) { return p ? (SqlDecimal)1 : (SqlDecimal)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6909 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6910 public static SqlDecimal ToSqlDecimal(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6911 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6912 public static SqlDecimal ToSqlDecimal(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6913 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6914 public static SqlDecimal ToSqlDecimal(Decimal p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6915 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6916 public static SqlDecimal ToSqlDecimal(Double p) { return checked((Decimal)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6917 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6918 public static SqlDecimal ToSqlDecimal(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6919 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6920 public static SqlDecimal ToSqlDecimal(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6921 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6922 public static SqlDecimal ToSqlDecimal(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6923 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6924 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6925 public static SqlDecimal ToSqlDecimal(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6926 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6927 public static SqlDecimal ToSqlDecimal(Single p) { return checked((Decimal)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6928 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6929 public static SqlDecimal ToSqlDecimal(String p) { return p == null? SqlDecimal.Null : Decimal.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6930 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6931 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6932 public static SqlDecimal ToSqlDecimal(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6933 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6934 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6935 public static SqlDecimal ToSqlDecimal(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6936 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6937 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6938 public static SqlDecimal ToSqlDecimal(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6939
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6940 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6941 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6942 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6943 public static SqlDecimal ToSqlDecimal(Boolean? p) { return p.HasValue && p.Value ? (SqlDecimal)1: (SqlDecimal)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6944 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6945 public static SqlDecimal ToSqlDecimal(Byte? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6946 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6947 public static SqlDecimal ToSqlDecimal(Char? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6948 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6949 public static SqlDecimal ToSqlDecimal(Decimal? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6950 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6951 public static SqlDecimal ToSqlDecimal(Double? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6952 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6953 public static SqlDecimal ToSqlDecimal(Int16? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6954 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6955 public static SqlDecimal ToSqlDecimal(Int32? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6956 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6957 public static SqlDecimal ToSqlDecimal(Int64? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6958 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6959 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6960 public static SqlDecimal ToSqlDecimal(SByte? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6961 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6962 public static SqlDecimal ToSqlDecimal(Single? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6963 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6964 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6965 public static SqlDecimal ToSqlDecimal(UInt16? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6966 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6967 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6968 public static SqlDecimal ToSqlDecimal(UInt32? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6969 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6970 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6971 public static SqlDecimal ToSqlDecimal(UInt64? p) { return p.HasValue ? p.Value : SqlDecimal.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6972
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6973 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6974 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6975 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6976 public static SqlDecimal ToSqlDecimal(SqlBoolean p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6977 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6978 public static SqlDecimal ToSqlDecimal(SqlByte p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6979 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6980 public static SqlDecimal ToSqlDecimal(SqlDouble p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6981 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6982 public static SqlDecimal ToSqlDecimal(SqlInt16 p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6983 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6984 public static SqlDecimal ToSqlDecimal(SqlInt32 p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6985 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6986 public static SqlDecimal ToSqlDecimal(SqlInt64 p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6987 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6988 public static SqlDecimal ToSqlDecimal(SqlMoney p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6989 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6990 public static SqlDecimal ToSqlDecimal(SqlSingle p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6991 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6992 public static SqlDecimal ToSqlDecimal(SqlString p) { return p.ToSqlDecimal(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6993
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6994 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6995 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6996 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6997 public static SqlDecimal ToSqlDecimal(Binary p) { return p == null || p.Length == 0 ? SqlDecimal.Null : ToDecimal(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6998 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6999 public static SqlDecimal ToSqlDecimal(Byte[] p) { return p == null || p.Length == 0 ? SqlDecimal.Null : ToDecimal(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7000
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7001 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7002 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7003 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlDecimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7004 public static SqlDecimal ToSqlDecimal(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7005 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7006 if (p == null) return SqlDecimal.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7007
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7008 if (p is SqlDecimal) return (SqlDecimal)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7009
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7010 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7011
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7012 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7013 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7014 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7015 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7016 case TypeCode.DBNull : return SqlDecimal.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7017 case TypeCode.SByte : return ToSqlDecimal((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7018 case TypeCode.Int16 : return ToSqlDecimal((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7019 case TypeCode.Int32 : return ToSqlDecimal((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7020 case TypeCode.Int64 : return ToSqlDecimal((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7021 case TypeCode.Byte : return ToSqlDecimal((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7022 case TypeCode.UInt16 : return ToSqlDecimal((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7023 case TypeCode.UInt32 : return ToSqlDecimal((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7024 case TypeCode.Char : return ToSqlDecimal((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7025 case TypeCode.UInt64 : return ToSqlDecimal((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7026 case TypeCode.Decimal : return ToSqlDecimal((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7027 case TypeCode.Single : return ToSqlDecimal((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7028 case TypeCode.Double : return ToSqlDecimal((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7029 case TypeCode.String : return ToSqlDecimal((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7030 case TypeCode.Boolean : return ToSqlDecimal((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7031 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7032
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7033 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7034 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7035 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7036 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7037 if (p is Boolean?) return ToSqlDecimal((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7038 if (p is Byte?) return ToSqlDecimal((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7039 if (p is Char?) return ToSqlDecimal((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7040 if (p is Decimal?) return ToSqlDecimal((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7041 if (p is Double?) return ToSqlDecimal((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7042 if (p is Int16?) return ToSqlDecimal((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7043 if (p is Int32?) return ToSqlDecimal((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7044 if (p is Int64?) return ToSqlDecimal((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7045 if (p is SByte?) return ToSqlDecimal((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7046 if (p is Single?) return ToSqlDecimal((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7047 if (p is UInt16?) return ToSqlDecimal((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7048 if (p is UInt32?) return ToSqlDecimal((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7049 if (p is UInt64?) return ToSqlDecimal((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7050 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7051
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7052 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7053 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7054 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7055 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7056 if (p is SqlBoolean) return ToSqlDecimal((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7057 if (p is SqlByte) return ToSqlDecimal((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7058 if (p is SqlDouble) return ToSqlDecimal((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7059 if (p is SqlInt16) return ToSqlDecimal((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7060 if (p is SqlInt32) return ToSqlDecimal((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7061 if (p is SqlInt64) return ToSqlDecimal((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7062 if (p is SqlMoney) return ToSqlDecimal((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7063 if (p is SqlSingle) return ToSqlDecimal((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7064 if (p is SqlString) return ToSqlDecimal((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7065 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7066
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7067 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7068 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7069 if (p is Binary) return ToSqlDecimal((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7070 if (p is Byte[]) return ToSqlDecimal((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7071
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7072 throw CreateInvalidCastException(p.GetType(), typeof(SqlDecimal));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7073 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7074
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7075 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7076
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7077 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7078
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7079 #region SqlDouble
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7080
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7081 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7082
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7083 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7084 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7085 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7086 public static SqlDouble ToSqlDouble(Boolean p) { return p ? (SqlDouble)1 : (SqlDouble)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7087 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7088 public static SqlDouble ToSqlDouble(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7089 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7090 public static SqlDouble ToSqlDouble(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7091 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7092 public static SqlDouble ToSqlDouble(DateTime p) { return (p - DateTime.MinValue).TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7093 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7094 public static SqlDouble ToSqlDouble(DateTimeOffset p) { return (p - DateTimeOffset.MinValue).TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7095 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7096 public static SqlDouble ToSqlDouble(Decimal p) { return checked((Double)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7097 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7098 public static SqlDouble ToSqlDouble(Double p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7099 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7100 public static SqlDouble ToSqlDouble(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7101 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7102 public static SqlDouble ToSqlDouble(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7103 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7104 public static SqlDouble ToSqlDouble(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7105 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7106 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7107 public static SqlDouble ToSqlDouble(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7108 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7109 public static SqlDouble ToSqlDouble(Single p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7110 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7111 public static SqlDouble ToSqlDouble(String p) { return p == null? SqlDouble.Null : Double.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7112 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7113 public static SqlDouble ToSqlDouble(TimeSpan p) { return p.TotalDays; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7114 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7115 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7116 public static SqlDouble ToSqlDouble(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7117 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7118 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7119 public static SqlDouble ToSqlDouble(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7120 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7121 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7122 public static SqlDouble ToSqlDouble(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7124 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7125 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7126 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7127 public static SqlDouble ToSqlDouble(Boolean? p) { return p.HasValue && p.Value ? (SqlDouble)1: (SqlDouble)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7128 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7129 public static SqlDouble ToSqlDouble(Byte? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7130 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7131 public static SqlDouble ToSqlDouble(Char? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7132 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7133 public static SqlDouble ToSqlDouble(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).TotalDays : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7134 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7135 public static SqlDouble ToSqlDouble(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTimeOffset.MinValue).TotalDays : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7136 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7137 public static SqlDouble ToSqlDouble(Decimal? p) { return p.HasValue ? checked((Double)p.Value) : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7138 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7139 public static SqlDouble ToSqlDouble(Double? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7140 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7141 public static SqlDouble ToSqlDouble(Int16? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7142 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7143 public static SqlDouble ToSqlDouble(Int32? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7144 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7145 public static SqlDouble ToSqlDouble(Int64? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7146 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7147 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7148 public static SqlDouble ToSqlDouble(SByte? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7149 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7150 public static SqlDouble ToSqlDouble(Single? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7151 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7152 public static SqlDouble ToSqlDouble(TimeSpan? p) { return p.HasValue ? p.Value.TotalDays : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7153 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7154 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7155 public static SqlDouble ToSqlDouble(UInt16? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7156 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7157 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7158 public static SqlDouble ToSqlDouble(UInt32? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7159 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7160 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7161 public static SqlDouble ToSqlDouble(UInt64? p) { return p.HasValue ? p.Value : SqlDouble.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7162
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7163 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7164 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7165 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7166 public static SqlDouble ToSqlDouble(SqlBoolean p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7167 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7168 public static SqlDouble ToSqlDouble(SqlByte p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7169 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7170 public static SqlDouble ToSqlDouble(SqlDateTime p) { return p.IsNull? SqlDouble.Null: ToDouble(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7171 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7172 public static SqlDouble ToSqlDouble(SqlDecimal p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7173 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7174 public static SqlDouble ToSqlDouble(SqlInt16 p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7175 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7176 public static SqlDouble ToSqlDouble(SqlInt32 p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7177 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7178 public static SqlDouble ToSqlDouble(SqlInt64 p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7179 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7180 public static SqlDouble ToSqlDouble(SqlMoney p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7181 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7182 public static SqlDouble ToSqlDouble(SqlSingle p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7183 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7184 public static SqlDouble ToSqlDouble(SqlString p) { return p.ToSqlDouble(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7185
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7186 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7187 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7188 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7189 public static SqlDouble ToSqlDouble(Binary p) { return p == null || p.Length == 0 ? SqlDouble.Null : BitConverter.ToDouble(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7190 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7191 public static SqlDouble ToSqlDouble(Byte[] p) { return p == null || p.Length == 0 ? SqlDouble.Null : BitConverter.ToDouble(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7192
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7193 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7194 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7195 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlDouble</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7196 public static SqlDouble ToSqlDouble(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7197 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7198 if (p == null) return SqlDouble.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7199
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7200 if (p is SqlDouble) return (SqlDouble)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7201
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7202 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7203
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7204 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7205 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7206 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7207 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7208 case TypeCode.DBNull : return SqlDouble.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7209 case TypeCode.DateTime : return ToSqlDouble((DateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7210 case TypeCode.SByte : return ToSqlDouble((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7211 case TypeCode.Int16 : return ToSqlDouble((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7212 case TypeCode.Int32 : return ToSqlDouble((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7213 case TypeCode.Int64 : return ToSqlDouble((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7214 case TypeCode.Byte : return ToSqlDouble((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7215 case TypeCode.UInt16 : return ToSqlDouble((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7216 case TypeCode.UInt32 : return ToSqlDouble((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7217 case TypeCode.Char : return ToSqlDouble((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7218 case TypeCode.UInt64 : return ToSqlDouble((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7219 case TypeCode.Single : return ToSqlDouble((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7220 case TypeCode.Double : return ToSqlDouble((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7221 case TypeCode.Decimal : return ToSqlDouble((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7222 case TypeCode.String : return ToSqlDouble((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7223 case TypeCode.Boolean : return ToSqlDouble((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7224 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7225
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7226 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7227 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7228 if (p is DateTimeOffset) return ToSqlDouble((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7229 if (p is TimeSpan) return ToSqlDouble((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7230
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7231 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7232 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7233 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7234 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7235 if (p is Boolean?) return ToSqlDouble((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7236 if (p is Byte?) return ToSqlDouble((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7237 if (p is Char?) return ToSqlDouble((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7238 if (p is DateTime?) return ToSqlDouble((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7239 if (p is DateTimeOffset?) return ToSqlDouble((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7240 if (p is Decimal?) return ToSqlDouble((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7241 if (p is Double?) return ToSqlDouble((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7242 if (p is Int16?) return ToSqlDouble((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7243 if (p is Int32?) return ToSqlDouble((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7244 if (p is Int64?) return ToSqlDouble((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7245 if (p is SByte?) return ToSqlDouble((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7246 if (p is Single?) return ToSqlDouble((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7247 if (p is TimeSpan?) return ToSqlDouble((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7248 if (p is UInt16?) return ToSqlDouble((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7249 if (p is UInt32?) return ToSqlDouble((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7250 if (p is UInt64?) return ToSqlDouble((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7251 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7253 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7254 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7255 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7256 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7257 if (p is SqlBoolean) return ToSqlDouble((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7258 if (p is SqlByte) return ToSqlDouble((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7259 if (p is SqlDateTime) return ToSqlDouble((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7260 if (p is SqlDecimal) return ToSqlDouble((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7261 if (p is SqlInt16) return ToSqlDouble((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7262 if (p is SqlInt32) return ToSqlDouble((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7263 if (p is SqlInt64) return ToSqlDouble((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7264 if (p is SqlMoney) return ToSqlDouble((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7265 if (p is SqlSingle) return ToSqlDouble((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7266 if (p is SqlString) return ToSqlDouble((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7267 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7268
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7269 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7270 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7271 if (p is Binary) return ToSqlDouble((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7272 if (p is Byte[]) return ToSqlDouble((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7273
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7274 throw CreateInvalidCastException(p.GetType(), typeof(SqlDouble));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7275 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7276
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7277 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7278
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7279 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7280
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7281 #region SqlGuid
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7282
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7283 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7284
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7285 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7286 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7287 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7288 public static SqlGuid ToSqlGuid(Guid p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7289 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7290 public static SqlGuid ToSqlGuid(String p) { return p == null ? SqlGuid.Null : new Guid(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7291
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7292 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7293 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7294 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7295 public static SqlGuid ToSqlGuid(Guid? p) { return p.HasValue ? p.Value : SqlGuid.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7296
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7297 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7298 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7299 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7300 public static SqlGuid ToSqlGuid(SqlBinary p) { return p.IsNull ? SqlGuid.Null : p.ToSqlGuid().Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7301 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7302 public static SqlGuid ToSqlGuid(SqlString p) { return p.IsNull ? SqlGuid.Null : new Guid(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7303
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7304 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7305 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7306 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7307 public static SqlGuid ToSqlGuid(Binary p) { return p == null ? SqlGuid.Null : new Guid(p.ToArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7308 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7309 public static SqlGuid ToSqlGuid(Byte[] p) { return p == null ? SqlGuid.Null : new Guid(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7310 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7311 public static SqlGuid ToSqlGuid(Type p) { return p == null ? SqlGuid.Null : p.GUID; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7312
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7313 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7314 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7315 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlGuid</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7316 public static SqlGuid ToSqlGuid(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7317 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7318 if (p == null) return SqlGuid.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7319
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7320 if (p is SqlGuid) return (SqlGuid)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7321
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7322 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7323
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7324 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7325 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7326 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7327 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7328 case TypeCode.DBNull : return SqlGuid.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7329 case TypeCode.String : return ToSqlGuid((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7330 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7331
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7332 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7333 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7334 if (p is Guid) return ToSqlGuid((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7335
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7336 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7337 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7338 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7339 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7340 if (p is Guid?) return ToSqlGuid((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7341 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7342
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7343 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7344 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7345 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7346 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7347 if (p is SqlBinary) return ToSqlGuid((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7348 if (p is SqlString) return ToSqlGuid((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7349 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7350
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7351 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7352 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7353 if (p is Binary) return ToSqlGuid((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7354 if (p is Byte[]) return ToSqlGuid((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7355 if (p is Type) return ToSqlGuid((Type) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7356
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7357 throw CreateInvalidCastException(p.GetType(), typeof(SqlGuid));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7358 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7359
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7360 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7361
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7362 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7363
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7364 #region SqlInt16
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7365
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7366 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7367
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7368 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7369 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7370 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7371 public static SqlInt16 ToSqlInt16(Boolean p) { return p ? (SqlInt16)1 : (SqlInt16)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7372 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7373 public static SqlInt16 ToSqlInt16(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7374 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7375 public static SqlInt16 ToSqlInt16(Char p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7376 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7377 public static SqlInt16 ToSqlInt16(Decimal p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7378 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7379 public static SqlInt16 ToSqlInt16(Double p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7380 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7381 public static SqlInt16 ToSqlInt16(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7382 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7383 public static SqlInt16 ToSqlInt16(Int32 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7384 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7385 public static SqlInt16 ToSqlInt16(Int64 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7386 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7387 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7388 public static SqlInt16 ToSqlInt16(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7389 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7390 public static SqlInt16 ToSqlInt16(Single p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7391 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7392 public static SqlInt16 ToSqlInt16(String p) { return p == null? SqlInt16.Null : Int16.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7393 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7394 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7395 public static SqlInt16 ToSqlInt16(UInt16 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7396 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7397 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7398 public static SqlInt16 ToSqlInt16(UInt32 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7399 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7400 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7401 public static SqlInt16 ToSqlInt16(UInt64 p) { return checked((Int16)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7402
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7403 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7404 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7405 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7406 public static SqlInt16 ToSqlInt16(Boolean? p) { return p.HasValue && p.Value ? (SqlInt16)1: (SqlInt16)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7407 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7408 public static SqlInt16 ToSqlInt16(Byte? p) { return p.HasValue ? p.Value : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7409 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7410 public static SqlInt16 ToSqlInt16(Char? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7411 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7412 public static SqlInt16 ToSqlInt16(Decimal? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7413 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7414 public static SqlInt16 ToSqlInt16(Double? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7415 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7416 public static SqlInt16 ToSqlInt16(Int16? p) { return p.HasValue ? p.Value : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7417 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7418 public static SqlInt16 ToSqlInt16(Int32? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7419 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7420 public static SqlInt16 ToSqlInt16(Int64? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7421 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7422 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7423 public static SqlInt16 ToSqlInt16(SByte? p) { return p.HasValue ? p.Value : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7424 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7425 public static SqlInt16 ToSqlInt16(Single? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7426 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7427 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7428 public static SqlInt16 ToSqlInt16(UInt16? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7429 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7430 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7431 public static SqlInt16 ToSqlInt16(UInt32? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7432 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7433 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7434 public static SqlInt16 ToSqlInt16(UInt64? p) { return p.HasValue ? checked((Int16)p.Value) : SqlInt16.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7435
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7436 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7437 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7438 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7439 public static SqlInt16 ToSqlInt16(SqlBoolean p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7440 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7441 public static SqlInt16 ToSqlInt16(SqlByte p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7442 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7443 public static SqlInt16 ToSqlInt16(SqlDecimal p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7444 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7445 public static SqlInt16 ToSqlInt16(SqlDouble p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7446 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7447 public static SqlInt16 ToSqlInt16(SqlInt32 p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7448 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7449 public static SqlInt16 ToSqlInt16(SqlInt64 p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7450 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7451 public static SqlInt16 ToSqlInt16(SqlMoney p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7452 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7453 public static SqlInt16 ToSqlInt16(SqlSingle p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7454 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7455 public static SqlInt16 ToSqlInt16(SqlString p) { return p.ToSqlInt16(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7457 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7458 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7459 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7460 public static SqlInt16 ToSqlInt16(Binary p) { return p == null || p.Length == 0 ? SqlInt16.Null : BitConverter.ToInt16(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7461 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7462 public static SqlInt16 ToSqlInt16(Byte[] p) { return p == null || p.Length == 0 ? SqlInt16.Null : BitConverter.ToInt16(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7463
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7464 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7465 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7466 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlInt16</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7467 public static SqlInt16 ToSqlInt16(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7468 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7469 if (p == null) return SqlInt16.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7470
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7471 if (p is SqlInt16) return (SqlInt16)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7472
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7473 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7474
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7475 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7476 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7477 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7478 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7479 case TypeCode.DBNull : return SqlInt16.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7480 case TypeCode.SByte : return ToSqlInt16((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7481 case TypeCode.Int16 : return ToSqlInt16((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7482 case TypeCode.Byte : return ToSqlInt16((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7483 case TypeCode.Int32 : return ToSqlInt16((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7484 case TypeCode.Int64 : return ToSqlInt16((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7485 case TypeCode.UInt16 : return ToSqlInt16((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7486 case TypeCode.UInt32 : return ToSqlInt16((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7487 case TypeCode.UInt64 : return ToSqlInt16((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7488 case TypeCode.Single : return ToSqlInt16((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7489 case TypeCode.Double : return ToSqlInt16((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7490 case TypeCode.Decimal : return ToSqlInt16((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7491 case TypeCode.Char : return ToSqlInt16((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7492 case TypeCode.String : return ToSqlInt16((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7493 case TypeCode.Boolean : return ToSqlInt16((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7494 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7495
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7496 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7497 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7498 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7499 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7500 if (p is Boolean?) return ToSqlInt16((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7501 if (p is Byte?) return ToSqlInt16((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7502 if (p is Char?) return ToSqlInt16((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7503 if (p is Decimal?) return ToSqlInt16((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7504 if (p is Double?) return ToSqlInt16((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7505 if (p is Int16?) return ToSqlInt16((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7506 if (p is Int32?) return ToSqlInt16((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7507 if (p is Int64?) return ToSqlInt16((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7508 if (p is SByte?) return ToSqlInt16((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7509 if (p is Single?) return ToSqlInt16((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7510 if (p is UInt16?) return ToSqlInt16((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7511 if (p is UInt32?) return ToSqlInt16((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7512 if (p is UInt64?) return ToSqlInt16((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7513 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7514
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7515 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7516 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7517 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7518 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7519 if (p is SqlBoolean) return ToSqlInt16((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7520 if (p is SqlByte) return ToSqlInt16((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7521 if (p is SqlDecimal) return ToSqlInt16((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7522 if (p is SqlDouble) return ToSqlInt16((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7523 if (p is SqlInt32) return ToSqlInt16((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7524 if (p is SqlInt64) return ToSqlInt16((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7525 if (p is SqlMoney) return ToSqlInt16((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7526 if (p is SqlSingle) return ToSqlInt16((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7527 if (p is SqlString) return ToSqlInt16((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7528 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7529
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7530 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7531 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7532 if (p is Binary) return ToSqlInt16((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7533 if (p is Byte[]) return ToSqlInt16((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7534
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7535 throw CreateInvalidCastException(p.GetType(), typeof(SqlInt16));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7536 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7537
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7538 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7539
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7540 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7541
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7542 #region SqlInt32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7543
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7544 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7545
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7546 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7547 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7548 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7549 public static SqlInt32 ToSqlInt32(Boolean p) { return p ? (SqlInt32)1 : (SqlInt32)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7550 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7551 public static SqlInt32 ToSqlInt32(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7552 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7553 public static SqlInt32 ToSqlInt32(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7554 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7555 public static SqlInt32 ToSqlInt32(Decimal p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7556 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7557 public static SqlInt32 ToSqlInt32(Double p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7558 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7559 public static SqlInt32 ToSqlInt32(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7560 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7561 public static SqlInt32 ToSqlInt32(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7562 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7563 public static SqlInt32 ToSqlInt32(Int64 p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7564 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7565 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7566 public static SqlInt32 ToSqlInt32(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7567 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7568 public static SqlInt32 ToSqlInt32(Single p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7569 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7570 public static SqlInt32 ToSqlInt32(String p) { return p == null? SqlInt32.Null : Int32.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7571 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7572 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7573 public static SqlInt32 ToSqlInt32(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7574 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7575 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7576 public static SqlInt32 ToSqlInt32(UInt32 p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7577 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7578 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7579 public static SqlInt32 ToSqlInt32(UInt64 p) { return checked((Int32)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7580
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7581 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7582 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7583 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7584 public static SqlInt32 ToSqlInt32(Boolean? p) { return p.HasValue && p.Value ? (SqlInt32)1: (SqlInt32)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7585 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7586 public static SqlInt32 ToSqlInt32(Byte? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7587 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7588 public static SqlInt32 ToSqlInt32(Char? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7589 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7590 public static SqlInt32 ToSqlInt32(Decimal? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7591 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7592 public static SqlInt32 ToSqlInt32(Double? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7593 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7594 public static SqlInt32 ToSqlInt32(Int16? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7595 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7596 public static SqlInt32 ToSqlInt32(Int32? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7597 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7598 public static SqlInt32 ToSqlInt32(Int64? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7599 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7600 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7601 public static SqlInt32 ToSqlInt32(SByte? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7602 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7603 public static SqlInt32 ToSqlInt32(Single? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7604 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7605 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7606 public static SqlInt32 ToSqlInt32(UInt16? p) { return p.HasValue ? p.Value : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7607 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7608 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7609 public static SqlInt32 ToSqlInt32(UInt32? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7610 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7611 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7612 public static SqlInt32 ToSqlInt32(UInt64? p) { return p.HasValue ? checked((Int32)p.Value) : SqlInt32.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7613
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7614 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7615 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7616 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7617 public static SqlInt32 ToSqlInt32(SqlBoolean p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7618 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7619 public static SqlInt32 ToSqlInt32(SqlByte p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7620 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7621 public static SqlInt32 ToSqlInt32(SqlDecimal p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7622 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7623 public static SqlInt32 ToSqlInt32(SqlDouble p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7624 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7625 public static SqlInt32 ToSqlInt32(SqlInt16 p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7626 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7627 public static SqlInt32 ToSqlInt32(SqlInt64 p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7628 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7629 public static SqlInt32 ToSqlInt32(SqlMoney p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7630 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7631 public static SqlInt32 ToSqlInt32(SqlSingle p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7632 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7633 public static SqlInt32 ToSqlInt32(SqlString p) { return p.ToSqlInt32(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7634
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7635 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7636 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7637 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7638 public static SqlInt32 ToSqlInt32(Binary p) { return p == null || p.Length == 0 ? SqlInt32.Null : BitConverter.ToInt32(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7639 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7640 public static SqlInt32 ToSqlInt32(Byte[] p) { return p == null || p.Length == 0 ? SqlInt32.Null : BitConverter.ToInt32(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7641
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7642 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7643 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7644 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlInt32</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7645 public static SqlInt32 ToSqlInt32(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7646 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7647 if (p == null) return SqlInt32.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7648
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7649 if (p is SqlInt32) return (SqlInt32)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7650
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7651 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7652
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7653 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7654 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7655 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7656 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7657 case TypeCode.DBNull : return SqlInt32.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7658 case TypeCode.SByte : return ToSqlInt32((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7659 case TypeCode.Int16 : return ToSqlInt32((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7660 case TypeCode.Int32 : return ToSqlInt32((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7661 case TypeCode.Byte : return ToSqlInt32((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7662 case TypeCode.UInt16 : return ToSqlInt32((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7663 case TypeCode.Char : return ToSqlInt32((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7664 case TypeCode.Int64 : return ToSqlInt32((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7665 case TypeCode.UInt32 : return ToSqlInt32((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7666 case TypeCode.UInt64 : return ToSqlInt32((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7667 case TypeCode.Single : return ToSqlInt32((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7668 case TypeCode.Double : return ToSqlInt32((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7669 case TypeCode.Decimal : return ToSqlInt32((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7670 case TypeCode.String : return ToSqlInt32((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7671 case TypeCode.Boolean : return ToSqlInt32((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7672 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7673
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7674 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7675 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7676 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7677 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7678 if (p is Boolean?) return ToSqlInt32((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7679 if (p is Byte?) return ToSqlInt32((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7680 if (p is Char?) return ToSqlInt32((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7681 if (p is Decimal?) return ToSqlInt32((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7682 if (p is Double?) return ToSqlInt32((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7683 if (p is Int16?) return ToSqlInt32((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7684 if (p is Int32?) return ToSqlInt32((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7685 if (p is Int64?) return ToSqlInt32((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7686 if (p is SByte?) return ToSqlInt32((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7687 if (p is Single?) return ToSqlInt32((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7688 if (p is UInt16?) return ToSqlInt32((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7689 if (p is UInt32?) return ToSqlInt32((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7690 if (p is UInt64?) return ToSqlInt32((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7691 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7692
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7693 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7694 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7695 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7696 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7697 if (p is SqlBoolean) return ToSqlInt32((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7698 if (p is SqlByte) return ToSqlInt32((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7699 if (p is SqlDecimal) return ToSqlInt32((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7700 if (p is SqlDouble) return ToSqlInt32((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7701 if (p is SqlInt16) return ToSqlInt32((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7702 if (p is SqlInt64) return ToSqlInt32((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7703 if (p is SqlMoney) return ToSqlInt32((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7704 if (p is SqlSingle) return ToSqlInt32((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7705 if (p is SqlString) return ToSqlInt32((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7706 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7707
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7708 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7709 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7710 if (p is Binary) return ToSqlInt32((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7711 if (p is Byte[]) return ToSqlInt32((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7712
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7713 throw CreateInvalidCastException(p.GetType(), typeof(SqlInt32));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7714 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7715
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7716 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7717
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7718 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7719
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7720 #region SqlInt64
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7721
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7722 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7723
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7724 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7725 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7726 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7727 public static SqlInt64 ToSqlInt64(Boolean p) { return p ? (SqlInt64)1 : (SqlInt64)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7728 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7729 public static SqlInt64 ToSqlInt64(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7730 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7731 public static SqlInt64 ToSqlInt64(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7732 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7733 public static SqlInt64 ToSqlInt64(DateTime p) { return (p - DateTime.MinValue).Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7734 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7735 public static SqlInt64 ToSqlInt64(DateTimeOffset p) { return (p - DateTime.MinValue).Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7736 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7737 public static SqlInt64 ToSqlInt64(Decimal p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7738 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7739 public static SqlInt64 ToSqlInt64(Double p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7740 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7741 public static SqlInt64 ToSqlInt64(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7742 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7743 public static SqlInt64 ToSqlInt64(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7744 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7745 public static SqlInt64 ToSqlInt64(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7746 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7747 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7748 public static SqlInt64 ToSqlInt64(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7749 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7750 public static SqlInt64 ToSqlInt64(Single p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7751 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7752 public static SqlInt64 ToSqlInt64(String p) { return p == null? SqlInt64.Null : Int64.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7753 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7754 public static SqlInt64 ToSqlInt64(TimeSpan p) { return p.Ticks; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7755 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7756 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7757 public static SqlInt64 ToSqlInt64(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7758 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7759 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7760 public static SqlInt64 ToSqlInt64(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7761 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7762 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7763 public static SqlInt64 ToSqlInt64(UInt64 p) { return checked((Int64)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7764
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7765 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7766 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7767 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7768 public static SqlInt64 ToSqlInt64(Boolean? p) { return p.HasValue && p.Value ? (SqlInt64)1: (SqlInt64)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7769 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7770 public static SqlInt64 ToSqlInt64(Byte? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7771 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7772 public static SqlInt64 ToSqlInt64(Char? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7773 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7774 public static SqlInt64 ToSqlInt64(DateTime? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7775 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7776 public static SqlInt64 ToSqlInt64(DateTimeOffset? p) { return p.HasValue ? (p.Value - DateTime.MinValue).Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7777 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7778 public static SqlInt64 ToSqlInt64(Decimal? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7779 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7780 public static SqlInt64 ToSqlInt64(Double? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7781 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7782 public static SqlInt64 ToSqlInt64(Int16? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7783 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7784 public static SqlInt64 ToSqlInt64(Int32? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7785 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7786 public static SqlInt64 ToSqlInt64(Int64? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7787 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7788 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7789 public static SqlInt64 ToSqlInt64(SByte? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7790 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7791 public static SqlInt64 ToSqlInt64(Single? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7792 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7793 public static SqlInt64 ToSqlInt64(TimeSpan? p) { return p.HasValue ? p.Value.Ticks : 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7794 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7795 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7796 public static SqlInt64 ToSqlInt64(UInt16? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7797 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7798 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7799 public static SqlInt64 ToSqlInt64(UInt32? p) { return p.HasValue ? p.Value : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7800 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7801 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7802 public static SqlInt64 ToSqlInt64(UInt64? p) { return p.HasValue ? checked((Int64)p.Value) : SqlInt64.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7803
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7804 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7805 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7806 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7807 public static SqlInt64 ToSqlInt64(SqlBoolean p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7808 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7809 public static SqlInt64 ToSqlInt64(SqlByte p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7810 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7811 public static SqlInt64 ToSqlInt64(SqlDateTime p) { return p.IsNull? SqlInt64.Null: ToInt64(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7812 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7813 public static SqlInt64 ToSqlInt64(SqlDecimal p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7814 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7815 public static SqlInt64 ToSqlInt64(SqlDouble p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7816 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7817 public static SqlInt64 ToSqlInt64(SqlInt16 p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7818 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7819 public static SqlInt64 ToSqlInt64(SqlInt32 p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7820 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7821 public static SqlInt64 ToSqlInt64(SqlMoney p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7822 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7823 public static SqlInt64 ToSqlInt64(SqlSingle p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7824 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7825 public static SqlInt64 ToSqlInt64(SqlString p) { return p.ToSqlInt64(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7826
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7827 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7828 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7829 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7830 public static SqlInt64 ToSqlInt64(Binary p) { return p == null || p.Length == 0 ? SqlInt64.Null : BitConverter.ToInt64(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7831 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7832 public static SqlInt64 ToSqlInt64(Byte[] p) { return p == null || p.Length == 0 ? SqlInt64.Null : BitConverter.ToInt64(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7833
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7834 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7835 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7836 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlInt64</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7837 public static SqlInt64 ToSqlInt64(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7838 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7839 if (p == null) return SqlInt64.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7840
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7841 if (p is SqlInt64) return (SqlInt64)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7842
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7843 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7844
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7845 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7846 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7847 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7848 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7849 case TypeCode.DBNull : return SqlInt64.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7850 case TypeCode.DateTime : return ToSqlInt64((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7851 case TypeCode.SByte : return ToSqlInt64((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7852 case TypeCode.Int16 : return ToSqlInt64((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7853 case TypeCode.Int32 : return ToSqlInt64((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7854 case TypeCode.Int64 : return ToSqlInt64((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7855 case TypeCode.Byte : return ToSqlInt64((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7856 case TypeCode.UInt16 : return ToSqlInt64((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7857 case TypeCode.UInt32 : return ToSqlInt64((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7858 case TypeCode.Char : return ToSqlInt64((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7859 case TypeCode.UInt64 : return ToSqlInt64((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7860 case TypeCode.Single : return ToSqlInt64((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7861 case TypeCode.Double : return ToSqlInt64((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7862 case TypeCode.Decimal : return ToSqlInt64((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7863 case TypeCode.String : return ToSqlInt64((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7864 case TypeCode.Boolean : return ToSqlInt64((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7865 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7866
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7867 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7868 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7869 if (p is DateTimeOffset) return ToSqlInt64((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7870 if (p is TimeSpan) return ToSqlInt64((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7871
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7872 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7873 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7874 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7875 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7876 if (p is Boolean?) return ToSqlInt64((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7877 if (p is Byte?) return ToSqlInt64((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7878 if (p is Char?) return ToSqlInt64((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7879 if (p is DateTime?) return ToSqlInt64((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7880 if (p is DateTimeOffset?) return ToSqlInt64((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7881 if (p is Decimal?) return ToSqlInt64((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7882 if (p is Double?) return ToSqlInt64((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7883 if (p is Int16?) return ToSqlInt64((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7884 if (p is Int32?) return ToSqlInt64((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7885 if (p is Int64?) return ToSqlInt64((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7886 if (p is SByte?) return ToSqlInt64((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7887 if (p is Single?) return ToSqlInt64((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7888 if (p is TimeSpan?) return ToSqlInt64((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7889 if (p is UInt16?) return ToSqlInt64((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7890 if (p is UInt32?) return ToSqlInt64((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7891 if (p is UInt64?) return ToSqlInt64((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7892 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7893
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7894 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7895 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7896 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7897 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7898 if (p is SqlBoolean) return ToSqlInt64((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7899 if (p is SqlByte) return ToSqlInt64((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7900 if (p is SqlDateTime) return ToSqlInt64((SqlDateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7901 if (p is SqlDecimal) return ToSqlInt64((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7902 if (p is SqlDouble) return ToSqlInt64((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7903 if (p is SqlInt16) return ToSqlInt64((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7904 if (p is SqlInt32) return ToSqlInt64((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7905 if (p is SqlMoney) return ToSqlInt64((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7906 if (p is SqlSingle) return ToSqlInt64((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7907 if (p is SqlString) return ToSqlInt64((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7908 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7909
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7910 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7911 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7912 if (p is Binary) return ToSqlInt64((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7913 if (p is Byte[]) return ToSqlInt64((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7914
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7915 throw CreateInvalidCastException(p.GetType(), typeof(SqlInt64));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7916 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7917
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7918 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7919
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7920 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7921
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7922 #region SqlMoney
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7923
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7924 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7925
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7926 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7927 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7928 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7929 public static SqlMoney ToSqlMoney(Boolean p) { return p ? (SqlMoney)1 : (SqlMoney)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7930 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7931 public static SqlMoney ToSqlMoney(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7932 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7933 public static SqlMoney ToSqlMoney(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7934 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7935 public static SqlMoney ToSqlMoney(Decimal p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7936 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7937 public static SqlMoney ToSqlMoney(Double p) { return checked((Decimal)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7938 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7939 public static SqlMoney ToSqlMoney(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7940 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7941 public static SqlMoney ToSqlMoney(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7942 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7943 public static SqlMoney ToSqlMoney(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7944 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7945 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7946 public static SqlMoney ToSqlMoney(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7947 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7948 public static SqlMoney ToSqlMoney(Single p) { return checked((Decimal)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7949 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7950 public static SqlMoney ToSqlMoney(String p) { return p == null? SqlMoney.Null : Decimal.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7951 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7952 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7953 public static SqlMoney ToSqlMoney(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7954 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7955 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7956 public static SqlMoney ToSqlMoney(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7957 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7958 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7959 public static SqlMoney ToSqlMoney(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7960
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7961 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7962 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7963 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7964 public static SqlMoney ToSqlMoney(Boolean? p) { return p.HasValue && p.Value ? (SqlMoney)1: (SqlMoney)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7965 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7966 public static SqlMoney ToSqlMoney(Byte? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7967 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7968 public static SqlMoney ToSqlMoney(Char? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7969 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7970 public static SqlMoney ToSqlMoney(Decimal? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7971 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7972 public static SqlMoney ToSqlMoney(Double? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7973 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7974 public static SqlMoney ToSqlMoney(Int16? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7975 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7976 public static SqlMoney ToSqlMoney(Int32? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7977 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7978 public static SqlMoney ToSqlMoney(Int64? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7979 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7980 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7981 public static SqlMoney ToSqlMoney(SByte? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7982 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7983 public static SqlMoney ToSqlMoney(Single? p) { return p.HasValue ? checked((Decimal)p.Value) : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7984 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7985 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7986 public static SqlMoney ToSqlMoney(UInt16? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7987 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7988 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7989 public static SqlMoney ToSqlMoney(UInt32? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7990 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7991 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7992 public static SqlMoney ToSqlMoney(UInt64? p) { return p.HasValue ? p.Value : SqlMoney.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7993
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7994 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7995 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7996 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7997 public static SqlMoney ToSqlMoney(SqlBoolean p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7998 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7999 public static SqlMoney ToSqlMoney(SqlByte p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8000 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8001 public static SqlMoney ToSqlMoney(SqlDecimal p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8002 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8003 public static SqlMoney ToSqlMoney(SqlDouble p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8004 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8005 public static SqlMoney ToSqlMoney(SqlInt16 p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8006 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8007 public static SqlMoney ToSqlMoney(SqlInt32 p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8008 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8009 public static SqlMoney ToSqlMoney(SqlInt64 p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8010 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8011 public static SqlMoney ToSqlMoney(SqlSingle p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8012 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8013 public static SqlMoney ToSqlMoney(SqlString p) { return p.ToSqlMoney(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8014
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8015 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8016 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8017 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8018 public static SqlMoney ToSqlMoney(Binary p) { return p == null || p.Length == 0 ? SqlMoney.Null : ToDecimal(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8019 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8020 public static SqlMoney ToSqlMoney(Byte[] p) { return p == null || p.Length == 0 ? SqlMoney.Null : ToDecimal(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8021
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8022 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8023 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8024 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlMoney</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8025 public static SqlMoney ToSqlMoney(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8026 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8027 if (p == null) return SqlMoney.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8028
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8029 if (p is SqlMoney) return (SqlMoney)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8030
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8031 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8032
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8033 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8034 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8035 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8036 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8037 case TypeCode.DBNull : return SqlMoney.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8038 case TypeCode.SByte : return ToSqlMoney((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8039 case TypeCode.Int16 : return ToSqlMoney((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8040 case TypeCode.Int32 : return ToSqlMoney((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8041 case TypeCode.Int64 : return ToSqlMoney((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8042 case TypeCode.Byte : return ToSqlMoney((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8043 case TypeCode.UInt16 : return ToSqlMoney((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8044 case TypeCode.UInt32 : return ToSqlMoney((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8045 case TypeCode.Char : return ToSqlMoney((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8046 case TypeCode.UInt64 : return ToSqlMoney((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8047 case TypeCode.Decimal : return ToSqlMoney((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8048 case TypeCode.Single : return ToSqlMoney((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8049 case TypeCode.Double : return ToSqlMoney((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8050 case TypeCode.String : return ToSqlMoney((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8051 case TypeCode.Boolean : return ToSqlMoney((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8052 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8053
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8054 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8055 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8056 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8057 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8058 if (p is Boolean?) return ToSqlMoney((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8059 if (p is Byte?) return ToSqlMoney((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8060 if (p is Char?) return ToSqlMoney((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8061 if (p is Decimal?) return ToSqlMoney((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8062 if (p is Double?) return ToSqlMoney((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8063 if (p is Int16?) return ToSqlMoney((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8064 if (p is Int32?) return ToSqlMoney((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8065 if (p is Int64?) return ToSqlMoney((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8066 if (p is SByte?) return ToSqlMoney((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8067 if (p is Single?) return ToSqlMoney((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8068 if (p is UInt16?) return ToSqlMoney((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8069 if (p is UInt32?) return ToSqlMoney((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8070 if (p is UInt64?) return ToSqlMoney((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8071 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8072
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8073 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8074 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8075 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8076 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8077 if (p is SqlBoolean) return ToSqlMoney((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8078 if (p is SqlByte) return ToSqlMoney((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8079 if (p is SqlDecimal) return ToSqlMoney((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8080 if (p is SqlDouble) return ToSqlMoney((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8081 if (p is SqlInt16) return ToSqlMoney((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8082 if (p is SqlInt32) return ToSqlMoney((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8083 if (p is SqlInt64) return ToSqlMoney((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8084 if (p is SqlSingle) return ToSqlMoney((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8085 if (p is SqlString) return ToSqlMoney((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8086 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8087
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8088 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8089 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8090 if (p is Binary) return ToSqlMoney((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8091 if (p is Byte[]) return ToSqlMoney((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8092
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8093 throw CreateInvalidCastException(p.GetType(), typeof(SqlMoney));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8094 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8095
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8096 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8097
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8098 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8099
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8100 #region SqlSingle
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8102 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8103
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8104 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8105 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8106 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8107 public static SqlSingle ToSqlSingle(Boolean p) { return p ? (SqlSingle)1 : (SqlSingle)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8108 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8109 public static SqlSingle ToSqlSingle(Byte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8110 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8111 public static SqlSingle ToSqlSingle(Char p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8112 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8113 public static SqlSingle ToSqlSingle(Decimal p) { return checked((Single)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8114 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8115 public static SqlSingle ToSqlSingle(Double p) { return checked((Single)p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8116 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8117 public static SqlSingle ToSqlSingle(Int16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8118 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8119 public static SqlSingle ToSqlSingle(Int32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8120 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8121 public static SqlSingle ToSqlSingle(Int64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8122 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8123 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8124 public static SqlSingle ToSqlSingle(SByte p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8125 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8126 public static SqlSingle ToSqlSingle(Single p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8127 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8128 public static SqlSingle ToSqlSingle(String p) { return p == null? SqlSingle.Null : Single.Parse(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8129 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8130 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8131 public static SqlSingle ToSqlSingle(UInt16 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8132 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8133 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8134 public static SqlSingle ToSqlSingle(UInt32 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8135 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8136 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8137 public static SqlSingle ToSqlSingle(UInt64 p) { return p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8138
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8139 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8140 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8141 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8142 public static SqlSingle ToSqlSingle(Boolean? p) { return p.HasValue && p.Value ? (SqlSingle)1: (SqlSingle)0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8143 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8144 public static SqlSingle ToSqlSingle(Byte? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8145 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8146 public static SqlSingle ToSqlSingle(Char? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8147 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8148 public static SqlSingle ToSqlSingle(Decimal? p) { return p.HasValue ? checked((Single)p.Value) : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8149 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8150 public static SqlSingle ToSqlSingle(Double? p) { return p.HasValue ? checked((Single)p.Value) : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8151 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8152 public static SqlSingle ToSqlSingle(Int16? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8153 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8154 public static SqlSingle ToSqlSingle(Int32? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8155 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8156 public static SqlSingle ToSqlSingle(Int64? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8157 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8158 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8159 public static SqlSingle ToSqlSingle(SByte? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8160 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8161 public static SqlSingle ToSqlSingle(Single? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8162 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8163 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8164 public static SqlSingle ToSqlSingle(UInt16? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8165 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8166 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8167 public static SqlSingle ToSqlSingle(UInt32? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8168 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8169 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8170 public static SqlSingle ToSqlSingle(UInt64? p) { return p.HasValue ? p.Value : SqlSingle.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8171
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8172 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8173 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8174 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8175 public static SqlSingle ToSqlSingle(SqlBoolean p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8176 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8177 public static SqlSingle ToSqlSingle(SqlByte p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8178 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8179 public static SqlSingle ToSqlSingle(SqlDecimal p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8180 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8181 public static SqlSingle ToSqlSingle(SqlDouble p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8182 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8183 public static SqlSingle ToSqlSingle(SqlInt16 p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8184 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8185 public static SqlSingle ToSqlSingle(SqlInt32 p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8186 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8187 public static SqlSingle ToSqlSingle(SqlInt64 p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8188 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8189 public static SqlSingle ToSqlSingle(SqlMoney p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8190 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8191 public static SqlSingle ToSqlSingle(SqlString p) { return p.ToSqlSingle(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8192
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8193 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8194 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8195 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8196 public static SqlSingle ToSqlSingle(Binary p) { return p == null || p.Length == 0 ? SqlSingle.Null : BitConverter.ToSingle(p.ToArray(), 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8197 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8198 public static SqlSingle ToSqlSingle(Byte[] p) { return p == null || p.Length == 0 ? SqlSingle.Null : BitConverter.ToSingle(p, 0); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8199
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8200 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8201 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8202 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlSingle</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8203 public static SqlSingle ToSqlSingle(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8204 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8205 if (p == null) return SqlSingle.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8206
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8207 if (p is SqlSingle) return (SqlSingle)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8208
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8209 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8210
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8211 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8212 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8213 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8214 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8215 case TypeCode.DBNull : return SqlSingle.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8216 case TypeCode.SByte : return ToSqlSingle((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8217 case TypeCode.Int16 : return ToSqlSingle((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8218 case TypeCode.Int32 : return ToSqlSingle((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8219 case TypeCode.Int64 : return ToSqlSingle((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8220 case TypeCode.Byte : return ToSqlSingle((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8221 case TypeCode.UInt16 : return ToSqlSingle((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8222 case TypeCode.UInt32 : return ToSqlSingle((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8223 case TypeCode.Char : return ToSqlSingle((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8224 case TypeCode.UInt64 : return ToSqlSingle((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8225 case TypeCode.Single : return ToSqlSingle((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8226 case TypeCode.Double : return ToSqlSingle((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8227 case TypeCode.Decimal : return ToSqlSingle((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8228 case TypeCode.String : return ToSqlSingle((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8229 case TypeCode.Boolean : return ToSqlSingle((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8230 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8231
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8232 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8233 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8234 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8235 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8236 if (p is Boolean?) return ToSqlSingle((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8237 if (p is Byte?) return ToSqlSingle((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8238 if (p is Char?) return ToSqlSingle((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8239 if (p is Decimal?) return ToSqlSingle((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8240 if (p is Double?) return ToSqlSingle((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8241 if (p is Int16?) return ToSqlSingle((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8242 if (p is Int32?) return ToSqlSingle((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8243 if (p is Int64?) return ToSqlSingle((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8244 if (p is SByte?) return ToSqlSingle((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8245 if (p is Single?) return ToSqlSingle((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8246 if (p is UInt16?) return ToSqlSingle((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8247 if (p is UInt32?) return ToSqlSingle((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8248 if (p is UInt64?) return ToSqlSingle((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8249 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8250
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8251 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8252 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8253 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8254 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8255 if (p is SqlBoolean) return ToSqlSingle((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8256 if (p is SqlByte) return ToSqlSingle((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8257 if (p is SqlDecimal) return ToSqlSingle((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8258 if (p is SqlDouble) return ToSqlSingle((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8259 if (p is SqlInt16) return ToSqlSingle((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8260 if (p is SqlInt32) return ToSqlSingle((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8261 if (p is SqlInt64) return ToSqlSingle((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8262 if (p is SqlMoney) return ToSqlSingle((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8263 if (p is SqlString) return ToSqlSingle((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8264 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8265
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8266 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8267 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8268 if (p is Binary) return ToSqlSingle((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8269 if (p is Byte[]) return ToSqlSingle((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8270
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8271 throw CreateInvalidCastException(p.GetType(), typeof(SqlSingle));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8272 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8273
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8274 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8275
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8276 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8277
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8278 #region SqlString
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8279
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8280 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8281
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8282 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8283 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8284 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8285 public static SqlString ToSqlString(Boolean p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8286 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8287 public static SqlString ToSqlString(Byte p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8288 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8289 public static SqlString ToSqlString(Char p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8290 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8291 public static SqlString ToSqlString(DateTime p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8292 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8293 public static SqlString ToSqlString(DateTimeOffset p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8294 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8295 public static SqlString ToSqlString(Decimal p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8296 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8297 public static SqlString ToSqlString(Double p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8298 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8299 public static SqlString ToSqlString(Guid p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8300 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8301 public static SqlString ToSqlString(Int16 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8302 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8303 public static SqlString ToSqlString(Int32 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8304 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8305 public static SqlString ToSqlString(Int64 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8306 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8307 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8308 public static SqlString ToSqlString(SByte p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8309 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8310 public static SqlString ToSqlString(Single p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8311 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8312 public static SqlString ToSqlString(String p) { return p ?? SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8313 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8314 public static SqlString ToSqlString(TimeSpan p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8315 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8316 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8317 public static SqlString ToSqlString(UInt16 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8318 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8319 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8320 public static SqlString ToSqlString(UInt32 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8321 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8322 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8323 public static SqlString ToSqlString(UInt64 p) { return p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8324
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8325 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8326 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8327 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8328 public static SqlString ToSqlString(Boolean? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8329 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8330 public static SqlString ToSqlString(Byte? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8331 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8332 public static SqlString ToSqlString(Char? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8333 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8334 public static SqlString ToSqlString(DateTime? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8335 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8336 public static SqlString ToSqlString(DateTimeOffset? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8337 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8338 public static SqlString ToSqlString(Decimal? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8339 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8340 public static SqlString ToSqlString(Double? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8341 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8342 public static SqlString ToSqlString(Guid? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8343 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8344 public static SqlString ToSqlString(Int16? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8345 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8346 public static SqlString ToSqlString(Int32? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8347 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8348 public static SqlString ToSqlString(Int64? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8349 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8350 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8351 public static SqlString ToSqlString(SByte? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8352 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8353 public static SqlString ToSqlString(Single? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8354 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8355 public static SqlString ToSqlString(TimeSpan? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8356 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8357 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8358 public static SqlString ToSqlString(UInt16? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8359 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8360 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8361 public static SqlString ToSqlString(UInt32? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8362 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8363 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8364 public static SqlString ToSqlString(UInt64? p) { return p.HasValue ? p.Value.ToString() : SqlString.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8365
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8366 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8367 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8368 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8369 public static SqlString ToSqlString(SqlBoolean p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8370 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8371 public static SqlString ToSqlString(SqlByte p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8372 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8373 public static SqlString ToSqlString(SqlChars p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8374 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8375 public static SqlString ToSqlString(SqlDecimal p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8376 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8377 public static SqlString ToSqlString(SqlDouble p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8378 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8379 public static SqlString ToSqlString(SqlGuid p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8380 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8381 public static SqlString ToSqlString(SqlInt16 p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8382 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8383 public static SqlString ToSqlString(SqlInt32 p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8384 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8385 public static SqlString ToSqlString(SqlInt64 p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8386 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8387 public static SqlString ToSqlString(SqlMoney p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8388 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8389 public static SqlString ToSqlString(SqlSingle p) { return p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8390 /// <summary>Converts the value from <c>SqlXml</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8391 public static SqlString ToSqlString(SqlXml p) { return p.IsNull ? SqlString.Null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8392
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8393 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8394 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8395 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8396 public static SqlString ToSqlString(Binary p) { return ToSqlString(p.ToArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8397 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8398 public static SqlString ToSqlString(Byte[] p) { return p == null ? SqlString.Null : System.Text.Encoding.UTF8.GetString(p, 0, p.Length); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8399 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8400 public static SqlString ToSqlString(Type p) { return p == null ? SqlString.Null : p.FullName; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8401 /// <summary>Converts the value from <c>XElement</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8402 public static SqlString ToSqlString(XElement p) { return p == null ? SqlString.Null : p.ToString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8403 /// <summary>Converts the value from <c>XmlDocument</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8404 public static SqlString ToSqlString(XmlDocument p) { return p == null ? SqlString.Null : p.InnerXml; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8405
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8406 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8407 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8408 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlString</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8409 public static SqlString ToSqlString(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8410 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8411 if (p == null) return SqlString.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8412
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8413 if (p is SqlString) return (SqlString)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8414
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8415 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8416
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8417 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8418 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8419 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8420 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8421 case TypeCode.DBNull : return SqlString.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8422 case TypeCode.SByte : return ToSqlString((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8423 case TypeCode.Int16 : return ToSqlString((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8424 case TypeCode.Int32 : return ToSqlString((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8425 case TypeCode.Int64 : return ToSqlString((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8426 case TypeCode.Byte : return ToSqlString((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8427 case TypeCode.UInt16 : return ToSqlString((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8428 case TypeCode.UInt32 : return ToSqlString((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8429 case TypeCode.UInt64 : return ToSqlString((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8430 case TypeCode.Single : return ToSqlString((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8431 case TypeCode.Double : return ToSqlString((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8432 case TypeCode.Boolean : return ToSqlString((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8433 case TypeCode.Decimal : return ToSqlString((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8434 case TypeCode.Char : return ToSqlString((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8435 case TypeCode.DateTime : return ToSqlString((DateTime) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8436 case TypeCode.String : return ToSqlString((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8437 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8438
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8439 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8440 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8441 if (p is DateTimeOffset) return ToSqlString((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8442 if (p is Guid) return ToSqlString((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8443 if (p is TimeSpan) return ToSqlString((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8444
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8445 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8446 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8447 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8448 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8449 if (p is Boolean?) return ToSqlString((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8450 if (p is Byte?) return ToSqlString((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8451 if (p is Char?) return ToSqlString((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8452 if (p is DateTime?) return ToSqlString((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8453 if (p is DateTimeOffset?) return ToSqlString((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8454 if (p is Decimal?) return ToSqlString((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8455 if (p is Double?) return ToSqlString((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8456 if (p is Guid?) return ToSqlString((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8457 if (p is Int16?) return ToSqlString((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8458 if (p is Int32?) return ToSqlString((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8459 if (p is Int64?) return ToSqlString((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8460 if (p is SByte?) return ToSqlString((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8461 if (p is Single?) return ToSqlString((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8462 if (p is TimeSpan?) return ToSqlString((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8463 if (p is UInt16?) return ToSqlString((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8464 if (p is UInt32?) return ToSqlString((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8465 if (p is UInt64?) return ToSqlString((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8466 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8467
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8468 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8469 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8470 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8471 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8472 if (p is SqlBoolean) return ToSqlString((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8473 if (p is SqlByte) return ToSqlString((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8474 if (p is SqlChars) return ToSqlString((SqlChars) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8475 if (p is SqlDecimal) return ToSqlString((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8476 if (p is SqlDouble) return ToSqlString((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8477 if (p is SqlGuid) return ToSqlString((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8478 if (p is SqlInt16) return ToSqlString((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8479 if (p is SqlInt32) return ToSqlString((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8480 if (p is SqlInt64) return ToSqlString((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8481 if (p is SqlMoney) return ToSqlString((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8482 if (p is SqlSingle) return ToSqlString((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8483 if (p is SqlXml) return ToSqlString((SqlXml) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8484 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8485
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8486 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8487 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8488 if (p is Binary) return ToSqlString((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8489 if (p is Byte[]) return ToSqlString((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8490 if (p is Type) return ToSqlString((Type) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8491 if (p is XElement) return ToSqlString((XElement) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8492 if (p is XmlDocument) return ToSqlString((XmlDocument) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8493
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8494 throw CreateInvalidCastException(p.GetType(), typeof(SqlString));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8495 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8496
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8497 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8498
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8499 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8500
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8501 #region SqlXml
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8502
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8503 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8504
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8505 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8506 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8507 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8508 public static SqlXml ToSqlXml(String p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p))); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8509
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8510 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8511 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8512 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8513 public static SqlXml ToSqlXml(SqlBinary p) { return p.IsNull ? SqlXml.Null : new SqlXml(new MemoryStream(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8514 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8515 public static SqlXml ToSqlXml(SqlBytes p) { return p.IsNull ? SqlXml.Null : new SqlXml(p.Stream); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8516 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8517 public static SqlXml ToSqlXml(SqlChars p) { return p.IsNull ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.ToSqlString().Value))); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8518 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8519 public static SqlXml ToSqlXml(SqlString p) { return p.IsNull ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.Value))); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8520
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8521 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8522 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8523 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8524 public static SqlXml ToSqlXml(Binary p) { return p == null ? SqlXml.Null : new SqlXml(new MemoryStream(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8525 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8526 public static SqlXml ToSqlXml(Byte[] p) { return p == null ? SqlXml.Null : new SqlXml(new MemoryStream(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8527 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8528 public static SqlXml ToSqlXml(Char[] p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(new string(p)))); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8529 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8530 public static SqlXml ToSqlXml(Stream p) { return p == null ? SqlXml.Null : new SqlXml(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8531 /// <summary>Converts the value from <c>XElement</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8532 public static SqlXml ToSqlXml(XElement p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.ToString()))); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8533 /// <summary>Converts the value from <c>XmlDocument</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8534 public static SqlXml ToSqlXml(XmlDocument p) { return p == null ? SqlXml.Null : new SqlXml(new XmlTextReader(new StringReader(p.InnerXml))); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8535 /// <summary>Converts the value from <c>XmlReader</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8536 public static SqlXml ToSqlXml(XmlReader p) { return p == null ? SqlXml.Null : new SqlXml(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8537
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8538 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8539 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8540 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>SqlXml</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8541 public static SqlXml ToSqlXml(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8542 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8543 if (p == null) return SqlXml.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8544
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8545 if (p is SqlXml) return (SqlXml)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8546
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8547 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8548
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8549 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8550 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8551 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8552 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8553 case TypeCode.DBNull : return SqlXml.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8554 case TypeCode.String : return ToSqlXml((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8555 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8556
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8557 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8558 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8559 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8560 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8561 if (p is SqlBinary) return ToSqlXml((SqlBinary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8562 if (p is SqlBytes) return ToSqlXml((SqlBytes) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8563 if (p is SqlChars) return ToSqlXml((SqlChars) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8564 if (p is SqlString) return ToSqlXml((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8565 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8566
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8567 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8568 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8569 if (p is Binary) return ToSqlXml((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8570 if (p is Byte[]) return ToSqlXml((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8571 if (p is Char[]) return ToSqlXml((Char[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8572 if (p is Stream) return ToSqlXml((Stream) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8573 if (p is XElement) return ToSqlXml((XElement) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8574 if (p is XmlDocument) return ToSqlXml((XmlDocument)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8575 if (p is XmlReader) return ToSqlXml((XmlReader) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8576
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8577 throw CreateInvalidCastException(p.GetType(), typeof(SqlXml));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8578 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8579
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8580 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8581
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8582 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8583
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8584 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8585
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8586 #region Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8587
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8588 #region Binary
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8589
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8590 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8591
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8592 #region Byte[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8593
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8594 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8595 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8596 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8597 public static Byte[] ToByteArray(Boolean p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8598 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8599 public static Byte[] ToByteArray(Byte p) { return new[] { p }; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8600 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8601 public static Byte[] ToByteArray(Char p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8602 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8603 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8604 public static Byte[] ToByteArray(DateTime p) { return ToByteArray(p.ToBinary()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8605 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8606 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8607 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8608 public static Byte[] ToByteArray(DateTimeOffset p) { return ToByteArray(p.LocalDateTime.ToBinary()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8609 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8610 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8611 public static Byte[] ToByteArray(Double p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8612 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8613 public static Byte[] ToByteArray(Guid p) { return p == Guid.Empty ? (Byte[])null : p.ToByteArray(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8614 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8615 public static Byte[] ToByteArray(Int16 p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8616 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8617 public static Byte[] ToByteArray(Int32 p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8618 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8619 public static Byte[] ToByteArray(Int64 p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8620 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8621 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8622 public static Byte[] ToByteArray(SByte p) { return new[] { checked((Byte)p) }; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8623 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8624 public static Byte[] ToByteArray(Single p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8625 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8626 public static Byte[] ToByteArray(String p) { return p == null ? (Byte[])null : System.Text.Encoding.UTF8.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8627 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8628 public static Byte[] ToByteArray(TimeSpan p) { return ToByteArray(p.Ticks); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8629 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8630 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8631 public static Byte[] ToByteArray(UInt16 p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8632 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8633 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8634 public static Byte[] ToByteArray(UInt32 p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8635 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8636 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8637 public static Byte[] ToByteArray(UInt64 p) { return BitConverter.GetBytes(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8638
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8639 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8640 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8641 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8642 public static Byte[] ToByteArray(Boolean? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8643 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8644 public static Byte[] ToByteArray(Byte? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8645 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8646 public static Byte[] ToByteArray(Char? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8647 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8648 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8649 public static Byte[] ToByteArray(DateTime? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8650 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8651 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8652 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8653 public static Byte[] ToByteArray(DateTimeOffset? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8654 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8655 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8656 public static Byte[] ToByteArray(Decimal? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8657 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8658 public static Byte[] ToByteArray(Double? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8659 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8660 public static Byte[] ToByteArray(Guid? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8661 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8662 public static Byte[] ToByteArray(Int16? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8663 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8664 public static Byte[] ToByteArray(Int32? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8665 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8666 public static Byte[] ToByteArray(Int64? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8667 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8668 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8669 public static Byte[] ToByteArray(SByte? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8670 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8671 public static Byte[] ToByteArray(Single? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8672 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8673 public static Byte[] ToByteArray(TimeSpan? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8674 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8675 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8676 public static Byte[] ToByteArray(UInt16? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8677 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8678 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8679 public static Byte[] ToByteArray(UInt32? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8680 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8681 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8682 public static Byte[] ToByteArray(UInt64? p) { return p.HasValue ? ToByteArray(p.Value) : (Byte[])null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8683
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8684 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8685 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8686 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8687 public static Byte[] ToByteArray(Binary p) { return p == null ? (Byte[])null : p.ToArray(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8688
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8689 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8690
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8691 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8692 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8693 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8694 public static Byte[] ToByteArray(SqlBinary p) { return p.IsNull ? (Byte[])null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8695 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8696 public static Byte[] ToByteArray(SqlBoolean p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8697 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8698 public static Byte[] ToByteArray(SqlByte p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8699 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8700 public static Byte[] ToByteArray(SqlBytes p) { return p.IsNull ? (Byte[])null : p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8701 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8702 public static Byte[] ToByteArray(SqlDecimal p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8703 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8704 public static Byte[] ToByteArray(SqlDouble p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8705 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8706 public static Byte[] ToByteArray(SqlGuid p) { return p.IsNull ? (Byte[])null : p.ToByteArray(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8707 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8708 public static Byte[] ToByteArray(SqlInt16 p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8709 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8710 public static Byte[] ToByteArray(SqlInt32 p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8711 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8712 public static Byte[] ToByteArray(SqlInt64 p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8713 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8714 public static Byte[] ToByteArray(SqlMoney p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8715 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8716 public static Byte[] ToByteArray(SqlSingle p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8717 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8718 public static Byte[] ToByteArray(SqlString p) { return p.IsNull ? (Byte[])null : ToByteArray(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8719
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8720 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8721
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8722 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8723 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8724 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8725 public static Byte[] ToByteArray(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8726 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8727 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8728
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8729 if (p is Byte[]) return (Byte[])p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8730
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8731 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8732
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8733 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8734 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8735 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8736 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8737 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8738 case TypeCode.Decimal : return ToByteArray((Decimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8739 case TypeCode.String : return ToByteArray((String) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8740 case TypeCode.Byte : return ToByteArray((Byte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8741 case TypeCode.SByte : return ToByteArray((SByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8742 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8743 case TypeCode.DateTime : return ToByteArray((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8744 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8745 case TypeCode.Int16 : return ToByteArray((Int16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8746 case TypeCode.Int32 : return ToByteArray((Int32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8747 case TypeCode.Int64 : return ToByteArray((Int64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8748 case TypeCode.UInt16 : return ToByteArray((UInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8749 case TypeCode.UInt32 : return ToByteArray((UInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8750 case TypeCode.UInt64 : return ToByteArray((UInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8751 case TypeCode.Single : return ToByteArray((Single) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8752 case TypeCode.Double : return ToByteArray((Double) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8753 case TypeCode.Boolean : return ToByteArray((Boolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8754 case TypeCode.Char : return ToByteArray((Char) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8755 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8756
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8757 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8758 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8759 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8760 if (p is DateTimeOffset) return ToByteArray((DateTimeOffset) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8761 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8762 if (p is Guid) return ToByteArray((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8763 if (p is TimeSpan) return ToByteArray((TimeSpan) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8764
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8765 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8766 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8767 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8768 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8769 if (p is Boolean?) return ToByteArray((Boolean?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8770 if (p is Byte?) return ToByteArray((Byte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8771 if (p is Char?) return ToByteArray((Char?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8772 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8773 if (p is DateTime?) return ToByteArray((DateTime?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8774 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8775 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8776 if (p is DateTimeOffset?) return ToByteArray((DateTimeOffset?)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8777 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8778 if (p is Decimal?) return ToByteArray((Decimal?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8779 if (p is Double?) return ToByteArray((Double?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8780 if (p is Guid?) return ToByteArray((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8781 if (p is Int16?) return ToByteArray((Int16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8782 if (p is Int32?) return ToByteArray((Int32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8783 if (p is Int64?) return ToByteArray((Int64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8784 if (p is SByte?) return ToByteArray((SByte?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8785 if (p is Single?) return ToByteArray((Single?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8786 if (p is TimeSpan?) return ToByteArray((TimeSpan?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8787 if (p is UInt16?) return ToByteArray((UInt16?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8788 if (p is UInt32?) return ToByteArray((UInt32?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8789 if (p is UInt64?) return ToByteArray((UInt64?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8790 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8791
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8792 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8793 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8794 if (p is Binary) return ToByteArray((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8795 if (p is Char[]) return ToByteArray((Char[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8796 if (p is Stream) return ToByteArray((Stream) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8797
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8798 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8799
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8800 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8801 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8802 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8803 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8804 if (p is SqlBinary) return ToByteArray((SqlBinary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8805 if (p is SqlBoolean) return ToByteArray((SqlBoolean) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8806 if (p is SqlByte) return ToByteArray((SqlByte) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8807 if (p is SqlBytes) return ToByteArray((SqlBytes) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8808 if (p is SqlDecimal) return ToByteArray((SqlDecimal) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8809 if (p is SqlDouble) return ToByteArray((SqlDouble) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8810 if (p is SqlGuid) return ToByteArray((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8811 if (p is SqlInt16) return ToByteArray((SqlInt16) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8812 if (p is SqlInt32) return ToByteArray((SqlInt32) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8813 if (p is SqlInt64) return ToByteArray((SqlInt64) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8814 if (p is SqlMoney) return ToByteArray((SqlMoney) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8815 if (p is SqlSingle) return ToByteArray((SqlSingle) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8816 if (p is SqlString) return ToByteArray((SqlString) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8817 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8818
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8819 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8820
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8821 throw CreateInvalidCastException(p.GetType(), typeof(Byte[]));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8822 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8823
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8824 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8825
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8826 #region Char[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8827
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8828 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8829
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8830 #region Stream
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8831
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8832 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8833 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8834 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8835 public static Stream ToStream(Guid p) { return p == Guid.Empty ? Stream.Null : new MemoryStream(p.ToByteArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8836
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8837 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8838 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8839 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8840 public static Stream ToStream(Guid? p) { return p.HasValue ? new MemoryStream(p.Value.ToByteArray()) : Stream.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8841
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8842 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8843 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8844 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8845 public static Stream ToStream(Binary p) { return p == null ? Stream.Null : new MemoryStream(p.ToArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8846 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8847 public static Stream ToStream(Byte[] p) { return p == null ? Stream.Null : new MemoryStream(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8848
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8849 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8850
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8851 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8852 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8853 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8854 public static Stream ToStream(SqlBinary p) { return p.IsNull ? Stream.Null : new MemoryStream(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8855 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8856 public static Stream ToStream(SqlBytes p) { return p.IsNull ? Stream.Null : p.Stream; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8857 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8858 public static Stream ToStream(SqlGuid p) { return p.IsNull ? Stream.Null : new MemoryStream(p.Value.ToByteArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8859
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8860 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8861
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8862 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8863 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8864 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Stream</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8865 public static Stream ToStream(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8866 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8867 if (p == null || p is DBNull) return Stream.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8868
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8869 if (p is Stream) return (Stream)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8870
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8871 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8872 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8873 if (p is Guid) return ToStream((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8874
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8875 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8876 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8877 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8878
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8879 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8880 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8881 if (p is Guid?) return ToStream((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8882 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8883
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8884 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8885 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8886 if (p is Binary) return ToStream((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8887 if (p is Byte[]) return ToStream((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8888
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8889 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8890
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8891 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8892 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8893 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8894 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8895 if (p is SqlBinary) return ToStream((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8896 if (p is SqlBytes) return ToStream((SqlBytes) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8897 if (p is SqlGuid) return ToStream((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8898 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8899
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8900 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8901
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8902 throw CreateInvalidCastException(p.GetType(), typeof(Stream));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8903 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8904
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8905 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8906
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8907 #region Type
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8908
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8909 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8910 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8911 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8912 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8913 public static Type ToType(Guid p) { return p == Guid.Empty ? (Type)null : Type.GetTypeFromCLSID(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8914 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8915 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8916 public static Type ToType(String p) { return p == null ? (Type)null : Type.GetType(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8917
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8918 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8919 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8920 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8921 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8922 public static Type ToType(Guid? p) { return p.HasValue ? Type.GetTypeFromCLSID(p.Value) : (Type)null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8923 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8924
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8925 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8926 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8927 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8928 /// <summary>Converts the value from <c>Binary</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8929 public static Type ToType(Binary p) { return p == null ? (Type)null : Type.GetTypeFromCLSID(ToGuid(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8930 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8931 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8932 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8933 public static Type ToType(Byte[] p) { return p == null ? (Type)null : Type.GetTypeFromCLSID(ToGuid(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8934 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8935 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8936 public static Type ToType(Char[] p) { return p == null ? (Type)null : Type.GetType(new string(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8937
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8938 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8939
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8940 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8941 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8942 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8943 public static Type ToType(SqlChars p) { return p.IsNull ? (Type)null : Type.GetType(new string(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8944 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8945 public static Type ToType(SqlGuid p) { return p.IsNull ? (Type)null : Type.GetTypeFromCLSID(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8946 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8947 public static Type ToType(SqlString p) { return p.IsNull ? (Type)null : Type.GetType(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8948
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8949 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8950
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8951 // From Object
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8952 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8953 /// <summary>Converts the value from <c>Object</c> to an equivalent <c>Type</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8954 public static Type ToType(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8955 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8956 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8957
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8958 if (p is Type) return (Type)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8959
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8960 var type = p.GetType();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8961
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8962 // Primitive types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8963 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8964 switch (Type.GetTypeCode(type))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8965 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8966 case TypeCode.DBNull : return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8967 case TypeCode.String : return ToType((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8968 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8969
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8970 // Simple Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8971 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8972 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8973 if (p is Guid) return ToType((Guid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8974 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8975
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8976 // Nullable Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8977 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8978 if (type.IsGenericType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8979 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8980 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8981 if (p is Guid?) return ToType((Guid?) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8982 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8983 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8984
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8985 // Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8986 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8987 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8988 if (p is Binary) return ToType((Binary) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8989 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8990 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8991 if (p is Byte[]) return ToType((Byte[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8992 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8993 if (p is Char[]) return ToType((Char[]) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8994
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8995 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8996
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8997 // Sql Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8998 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8999 if (p is INullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9000 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9001 if (p is SqlChars) return ToType((SqlChars) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9002 if (p is SqlGuid) return ToType((SqlGuid) p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9003 if (p is SqlString) return ToType((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9004 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9005
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9006 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9007
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9008 throw CreateInvalidCastException(p.GetType(), typeof(Type));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9009 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9010
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9011 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9012
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9013 #region XmlDocument
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9014
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9015 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9016
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9017 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9018
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9019 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9020
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9021 #region XmlReader
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9022
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9023 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9024
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9025 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9026
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9027 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9028
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9029 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9030 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9031 }