annotate Source/Common/Convert.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 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.Threading;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using System.Xml;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using System.Xml.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 namespace BLToolkit.Common
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 using Properties;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 /// <summary>Converts a base data type to another base data type.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public static partial class Convert
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 #region Boolean
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Boolean</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public static Boolean ToBoolean(Char p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 switch (p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 case '\x0' : // Allow int <=> Char <=> Boolean
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 case '0' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 case 'n' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 case 'N' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 case 'f' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 case 'F' : return false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 case '\x1' : // Allow int <=> Char <=> Boolean
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 case '1' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 case 'y' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 case 'Y' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 case 't' :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 case 'T' : return true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 throw CreateInvalidCastException(typeof(Char), typeof(Boolean));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 #region Byte[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public static Byte[] ToByteArray(Decimal p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 var bits = Decimal.GetBits(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 var bytes = new Byte[Buffer.ByteLength(bits)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 Buffer.BlockCopy(bits, 0, bytes, 0, bytes.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 return bytes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 public static Byte[] ToByteArray(Stream p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 if (p == null || p == Stream.Null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 if (p is MemoryStream) return ((MemoryStream)p).ToArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 var position = p.Seek(0, SeekOrigin.Begin);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 var bytes = new Byte[p.Length];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 p.Read(bytes, 0, bytes.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 p.Position = position;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 return bytes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 public static Byte[] ToByteArray(Char[] p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 var bytes = new Byte[Buffer.ByteLength(p)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 Buffer.BlockCopy(p, 0, bytes, 0, bytes.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 return bytes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 #region Decimal
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Decimal</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 public static Decimal ToDecimal(Byte[] p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 if (p == null || p.Length == 0) return 0.0m;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 var bits = new int[p.Length / sizeof(int)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 Buffer.BlockCopy(p, 0, bits, 0, p.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 return new Decimal(bits);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 public static Decimal ToDecimal(Binary p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 if (p == null || p.Length == 0) return 0.0m;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 var bits = new int[p.Length / sizeof(int)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 Buffer.BlockCopy(p.ToArray(), 0, bits, 0, p.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 return new Decimal(bits);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 #region SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 #region SqlChars
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 /// <summary>Converts the value from <c>String</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 public static SqlChars ToSqlChars(String p) { return p == null? SqlChars.Null: new SqlChars(p.ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 public static SqlChars ToSqlChars(Char[] p) { return p == null? SqlChars.Null: new SqlChars(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 public static SqlChars ToSqlChars(Byte[] p) { return p == null? SqlChars.Null: new SqlChars(ToCharArray(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 public static SqlChars ToSqlChars(Binary p) { return p == null? SqlChars.Null: new SqlChars(ToCharArray(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 public static SqlChars ToSqlChars(SByte p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 public static SqlChars ToSqlChars(Int16 p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 public static SqlChars ToSqlChars(Int32 p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 public static SqlChars ToSqlChars(Int64 p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 public static SqlChars ToSqlChars(Byte p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 public static SqlChars ToSqlChars(UInt16 p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 public static SqlChars ToSqlChars(UInt32 p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 public static SqlChars ToSqlChars(UInt64 p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 public static SqlChars ToSqlChars(Single p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 public static SqlChars ToSqlChars(Double p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 public static SqlChars ToSqlChars(Boolean p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 public static SqlChars ToSqlChars(Decimal p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 public static SqlChars ToSqlChars(Char p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 public static SqlChars ToSqlChars(TimeSpan p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 public static SqlChars ToSqlChars(DateTime p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 public static SqlChars ToSqlChars(DateTimeOffset p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 public static SqlChars ToSqlChars(Guid p) { return new SqlChars(ToString(p).ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 // Nullable Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 public static SqlChars ToSqlChars(SByte? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 public static SqlChars ToSqlChars(Int16? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 public static SqlChars ToSqlChars(Int32? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 public static SqlChars ToSqlChars(Int64? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 public static SqlChars ToSqlChars(Byte? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 public static SqlChars ToSqlChars(UInt16? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 public static SqlChars ToSqlChars(UInt32? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 public static SqlChars ToSqlChars(UInt64? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 public static SqlChars ToSqlChars(Single? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 public static SqlChars ToSqlChars(Double? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 public static SqlChars ToSqlChars(Boolean? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 public static SqlChars ToSqlChars(Decimal? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 public static SqlChars ToSqlChars(Char? p) { return p.HasValue? new SqlChars(new Char[]{p.Value}) : SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 public static SqlChars ToSqlChars(TimeSpan? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 public static SqlChars ToSqlChars(DateTime? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 public static SqlChars ToSqlChars(DateTimeOffset? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 public static SqlChars ToSqlChars(Guid? p) { return p.HasValue? new SqlChars(p.ToString().ToCharArray()): SqlChars.Null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 public static SqlChars ToSqlChars(SqlString p) { return (SqlChars)p; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 public static SqlChars ToSqlChars(SqlByte p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 public static SqlChars ToSqlChars(SqlInt16 p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 public static SqlChars ToSqlChars(SqlInt32 p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 public static SqlChars ToSqlChars(SqlInt64 p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 public static SqlChars ToSqlChars(SqlSingle p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 public static SqlChars ToSqlChars(SqlDouble p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 public static SqlChars ToSqlChars(SqlDecimal p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 public static SqlChars ToSqlChars(SqlMoney p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 public static SqlChars ToSqlChars(SqlBoolean p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 public static SqlChars ToSqlChars(SqlGuid p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 /// <summary>Converts the value from <c>SqlDateTime</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 public static SqlChars ToSqlChars(SqlDateTime p) { return (SqlChars)p.ToSqlString(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 public static SqlChars ToSqlChars(SqlBinary p) { return p.IsNull? SqlChars.Null: new SqlChars(p.ToString().ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 /// <summary>Converts the value from <c>Type</c> to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 public static SqlChars ToSqlChars(Type p) { return p == null? SqlChars.Null: new SqlChars(p.FullName.ToCharArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 /// <summary>Converts the value of a specified object to an equivalent <c>SqlChars</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 public static SqlChars ToSqlChars(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 if (p == null || p is DBNull) return SqlChars.Null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 if (p is SqlChars) return (SqlChars)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 if (p is String) return ToSqlChars((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 if (p is Char[]) return ToSqlChars((Char[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 if (p is Byte[]) return ToSqlChars((Byte[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 if (p is Binary) return ToSqlChars(((Binary)p).ToArray());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 if (p is SByte) return ToSqlChars((SByte)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 if (p is Int16) return ToSqlChars((Int16)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 if (p is Int32) return ToSqlChars((Int32)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 if (p is Int64) return ToSqlChars((Int64)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 if (p is Byte) return ToSqlChars((Byte)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 if (p is UInt16) return ToSqlChars((UInt16)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 if (p is UInt32) return ToSqlChars((UInt32)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 if (p is UInt64) return ToSqlChars((UInt64)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 if (p is Single) return ToSqlChars((Single)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 if (p is Double) return ToSqlChars((Double)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 if (p is Boolean) return ToSqlChars((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 if (p is Decimal) return ToSqlChars((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 if (p is SqlString) return ToSqlChars((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 if (p is SqlByte) return ToSqlChars((SqlByte)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 if (p is SqlInt16) return ToSqlChars((SqlInt16)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 if (p is SqlInt32) return ToSqlChars((SqlInt32)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 if (p is SqlInt64) return ToSqlChars((SqlInt64)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 if (p is SqlSingle) return ToSqlChars((SqlSingle)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 if (p is SqlDouble) return ToSqlChars((SqlDouble)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285 if (p is SqlDecimal) return ToSqlChars((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 if (p is SqlMoney) return ToSqlChars((SqlMoney)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 if (p is SqlBoolean) return ToSqlChars((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 if (p is SqlBinary) return ToSqlChars((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 if (p is Type) return ToSqlChars((Type)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 return new SqlChars(ToString(p).ToCharArray());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 #region Other Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 #region Binary
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 public static Binary ToLinqBinary(String p) { return p == null? null: new Binary(System.Text.Encoding.UTF8.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 /// <summary>Converts the value from <c>Byte</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 public static Binary ToLinqBinary(Byte p) { return new Binary(new byte[]{p}); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 /// <summary>Converts the value from <c>SByte</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 public static Binary ToLinqBinary(SByte p) { return new Binary(new byte[]{checked((Byte)p)}); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314 /// <summary>Converts the value from <c>Decimal</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 public static Binary ToLinqBinary(Decimal p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 var bits = Decimal.GetBits(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 var bytes = new Byte[Buffer.ByteLength(bits)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 Buffer.BlockCopy(bits, 0, bytes, 0, bytes.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 return new Binary(bytes);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 /// <summary>Converts the value from <c>Int16</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 public static Binary ToLinqBinary(Int16 p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 /// <summary>Converts the value from <c>Int32</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326 public static Binary ToLinqBinary(Int32 p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 /// <summary>Converts the value from <c>Int64</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328 public static Binary ToLinqBinary(Int64 p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 /// <summary>Converts the value from <c>UInt16</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 public static Binary ToLinqBinary(UInt16 p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 /// <summary>Converts the value from <c>UInt32</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 public static Binary ToLinqBinary(UInt32 p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 /// <summary>Converts the value from <c>UInt64</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338 public static Binary ToLinqBinary(UInt64 p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 /// <summary>Converts the value from <c>Single</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 public static Binary ToLinqBinary(Single p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342 /// <summary>Converts the value from <c>Double</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343 public static Binary ToLinqBinary(Double p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 /// <summary>Converts the value from <c>Boolean</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 public static Binary ToLinqBinary(Boolean p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347 /// <summary>Converts the value from <c>Char</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 public static Binary ToLinqBinary(Char p) { return new Binary(BitConverter.GetBytes(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350 /// <summary>Converts the value from <c>DateTime</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 public static Binary ToLinqBinary(DateTime p) { return new Binary(ToByteArray(p.ToBinary())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352 /// <summary>Converts the value from <c>DateTimeOffset</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353 public static Binary ToLinqBinary(DateTimeOffset p) { return new Binary(ToByteArray(p.LocalDateTime.ToBinary())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355 public static Binary ToLinqBinary(Byte[] p) { return new Binary(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 /// <summary>Converts the value from <c>TimeSpan</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 public static Binary ToLinqBinary(TimeSpan p) { return new Binary(ToByteArray(p.Ticks)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359 public static Binary ToLinqBinary(Stream p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 if (p is MemoryStream) return ((MemoryStream)p).ToArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 var position = p.Seek(0, SeekOrigin.Begin);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 var bytes = new Byte[p.Length];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 p.Read(bytes, 0, bytes.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367 p.Position = position;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369 return new Binary(bytes);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 public static Binary ToLinqBinary(Char[] p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374 var bytes = new Byte[Buffer.ByteLength(p)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 Buffer.BlockCopy(p, 0, bytes, 0, bytes.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 return new Binary(bytes);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379 /// <summary>Converts the value from <c>Guid</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380 public static Binary ToLinqBinary(Guid p) { return p == Guid.Empty? null: new Binary(p.ToByteArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382 // Nullable Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 /// <summary>Converts the value from <c>SByte?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386 public static Binary ToLinqBinary(SByte? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387 /// <summary>Converts the value from <c>Int16?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 public static Binary ToLinqBinary(Int16? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 /// <summary>Converts the value from <c>Int32?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390 public static Binary ToLinqBinary(Int32? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 /// <summary>Converts the value from <c>Int64?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 public static Binary ToLinqBinary(Int64? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394 /// <summary>Converts the value from <c>Byte?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395 public static Binary ToLinqBinary(Byte? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 /// <summary>Converts the value from <c>UInt16?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 public static Binary ToLinqBinary(UInt16? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 /// <summary>Converts the value from <c>UInt32?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 public static Binary ToLinqBinary(UInt32? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 /// <summary>Converts the value from <c>UInt64?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 public static Binary ToLinqBinary(UInt64? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406 /// <summary>Converts the value from <c>Single?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 public static Binary ToLinqBinary(Single? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408 /// <summary>Converts the value from <c>Double?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 public static Binary ToLinqBinary(Double? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411 /// <summary>Converts the value from <c>Boolean?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412 public static Binary ToLinqBinary(Boolean? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 /// <summary>Converts the value from <c>Decimal?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414 public static Binary ToLinqBinary(Decimal? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 /// <summary>Converts the value from <c>Char?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 public static Binary ToLinqBinary(Char? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 /// <summary>Converts the value from <c>DateTime?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 public static Binary ToLinqBinary(DateTime? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419 /// <summary>Converts the value from <c>DateTimeOffset?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 public static Binary ToLinqBinary(DateTimeOffset? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 /// <summary>Converts the value from <c>TimeSpan?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 public static Binary ToLinqBinary(TimeSpan? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423 /// <summary>Converts the value from <c>Guid?</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 public static Binary ToLinqBinary(Guid? p) { return p.HasValue? new Binary(ToByteArray(p.Value)): null; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 public static Binary ToLinqBinary(SqlBinary p) { return p.IsNull? null: new Binary(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 /// <summary>Converts the value from <c>SqlBytes</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433 public static Binary ToLinqBinary(SqlBytes p) { return p.IsNull? null: new Binary(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 /// <summary>Converts the value from <c>SqlGuid</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435 public static Binary ToLinqBinary(SqlGuid p) { return p.IsNull? null: new Binary(p.ToByteArray()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 public static Binary ToLinqBinary(SqlString p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 /// <summary>Converts the value from <c>SqlByte</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 public static Binary ToLinqBinary(SqlByte p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 /// <summary>Converts the value from <c>SqlInt16</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442 public static Binary ToLinqBinary(SqlInt16 p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 /// <summary>Converts the value from <c>SqlInt32</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444 public static Binary ToLinqBinary(SqlInt32 p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 /// <summary>Converts the value from <c>SqlInt64</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
446 public static Binary ToLinqBinary(SqlInt64 p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
447
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
448 /// <summary>Converts the value from <c>SqlSingle</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
449 public static Binary ToLinqBinary(SqlSingle p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 /// <summary>Converts the value from <c>SqlDouble</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 public static Binary ToLinqBinary(SqlDouble p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452 /// <summary>Converts the value from <c>SqlDecimal</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 public static Binary ToLinqBinary(SqlDecimal p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454 /// <summary>Converts the value from <c>SqlMoney</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 public static Binary ToLinqBinary(SqlMoney p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 /// <summary>Converts the value from <c>SqlBoolean</c> to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 public static Binary ToLinqBinary(SqlBoolean p) { return p.IsNull? null: new Binary(ToByteArray(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462 /// <summary>Converts the value of a specified object to an equivalent <c>Byte[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463 public static Binary ToLinqBinary(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465 if (p == null || p is DBNull) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467 if (p is Byte[]) return new Binary((Byte[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468 if (p is Binary) return (Binary)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 if (p is String) return ToLinqBinary((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473 if (p is Byte) return ToLinqBinary((Byte)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474 if (p is SByte) return ToLinqBinary((SByte)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475 if (p is Decimal) return ToLinqBinary((Decimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476 if (p is Int16) return ToLinqBinary((Int16)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 if (p is Int32) return ToLinqBinary((Int32)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478 if (p is Int64) return ToLinqBinary((Int64)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480 if (p is UInt16) return ToLinqBinary((UInt16)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481 if (p is UInt32) return ToLinqBinary((UInt32)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 if (p is UInt64) return ToLinqBinary((UInt64)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 if (p is Single) return ToLinqBinary((Single)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485 if (p is Double) return ToLinqBinary((Double)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487 if (p is Boolean) return ToLinqBinary((Boolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488 if (p is DateTime) return ToLinqBinary((DateTime)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489 if (p is DateTimeOffset) return ToLinqBinary((DateTimeOffset)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490 if (p is TimeSpan) return ToLinqBinary((TimeSpan)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491 if (p is Stream) return ToLinqBinary((Stream)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492 if (p is Char[]) return ToLinqBinary((Char[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493 if (p is Guid) return ToLinqBinary((Guid)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499 if (p is SqlBinary) return ToLinqBinary((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 if (p is SqlBytes) return ToLinqBinary((SqlBytes)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 if (p is SqlGuid) return ToLinqBinary((SqlGuid)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502 if (p is SqlString) return ToLinqBinary((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504 if (p is SqlByte) return ToLinqBinary((SqlByte)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505 if (p is SqlInt16) return ToLinqBinary((SqlInt16)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506 if (p is SqlInt32) return ToLinqBinary((SqlInt32)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507 if (p is SqlInt64) return ToLinqBinary((SqlInt64)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509 if (p is SqlSingle) return ToLinqBinary((SqlSingle)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 if (p is SqlDouble) return ToLinqBinary((SqlDouble)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
511 if (p is SqlDecimal) return ToLinqBinary((SqlDecimal)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
512 if (p is SqlMoney) return ToLinqBinary((SqlMoney)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
513
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
514 if (p is SqlBoolean) return ToLinqBinary((SqlBoolean)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
515
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
516 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
517
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
518 throw CreateInvalidCastException(p.GetType(), typeof(Byte[]));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
519 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
520
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
521 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
522
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
523 #region Char[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
524
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
525 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
526 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
527 /// <summary>Converts the value from <c>String</c> to an equivalent <c>Char[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
528 public static Char[] ToCharArray(String p) { return p == null? null: p.ToCharArray(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
529
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
530 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
531
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
532 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
533 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
534 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>Char[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
535 public static Char[] ToCharArray(SqlString p) { return p.IsNull? null: p.Value.ToCharArray(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
536 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>Char[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
537 public static Char[] ToCharArray(SqlChars p) { return p.IsNull? null: p.Value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
538
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
539 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
540
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
541 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>Char[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
542 public static Char[] ToCharArray(Byte[] p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
543 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
544 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
545
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
546 var chars = new Char[p.Length / sizeof(Char)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
547
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
548 Buffer.BlockCopy(p, 0, chars, 0, p.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
549 return chars;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
550 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
551
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
552 public static Char[] ToCharArray(Binary p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
553 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
554 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
555
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
556 var chars = new Char[p.Length / sizeof(Char)];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
557
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
558 Buffer.BlockCopy(p.ToArray(), 0, chars, 0, p.Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
559 return chars;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
560 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
561
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
562 /// <summary>Converts the value of a specified object to an equivalent <c>Char[]</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
563 public static Char[] ToCharArray(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
564 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
565 if (p == null || p is DBNull) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
566
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
567 if (p is Char[]) return (Char[])p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
568
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
569 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
570 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
571 if (p is String) return ToCharArray((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
572
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
573 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
574
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
575 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
576 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
577 if (p is SqlString) return ToCharArray((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
578 if (p is SqlChars) return ToCharArray((SqlChars)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
579
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
580 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
581 if (p is Byte[]) return ToCharArray((Byte[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
582 if (p is Binary) return ToCharArray(((Binary)p).ToArray());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
583
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
584 return ToString(p).ToCharArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
585 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
586
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
587 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
588
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
589 #region XmlReader
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
590
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
591 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
592
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
593 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
594 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
595 /// <summary>Converts the value from <c>String</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
596 public static XmlReader ToXmlReader(String p) { return p == null? null: new XmlTextReader(new StringReader(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
597
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
598 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
599 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
600 /// <summary>Converts the value from <c>SqlXml</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
601 public static XmlReader ToXmlReader(SqlXml p) { return p.IsNull? null: p.CreateReader(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
602 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
603 public static XmlReader ToXmlReader(SqlString p) { return p.IsNull? null: new XmlTextReader(new StringReader(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
604 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
605 public static XmlReader ToXmlReader(SqlChars p) { return p.IsNull? null: new XmlTextReader(new StringReader(p.ToSqlString().Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
606 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
607 public static XmlReader ToXmlReader(SqlBinary p) { return p.IsNull? null: new XmlTextReader(new MemoryStream(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
608
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
609 // Other Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
610 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
611 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
612 public static XmlReader ToXmlReader(Stream p) { return p == null? null: new XmlTextReader(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
613 /// <summary>Converts the value from <c>TextReader</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
614 public static XmlReader ToXmlReader(TextReader p) { return p == null? null: new XmlTextReader(p); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
615 /// <summary>Converts the value from <c>XmlDocument</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
616 public static XmlReader ToXmlReader(XmlDocument p) { return p == null? null: new XmlTextReader(new StringReader(p.InnerXml)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
617
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
618 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
619 public static XmlReader ToXmlReader(Char[] p) { return p == null? null: new XmlTextReader(new StringReader(new string(p))); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
620 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
621 public static XmlReader ToXmlReader(Byte[] p) { return p == null? null: new XmlTextReader(new MemoryStream(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
622 public static XmlReader ToXmlReader(Binary p) { return p == null? null: new XmlTextReader(new MemoryStream(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
623
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
624 /// <summary>Converts the value of a specified object to an equivalent <c>XmlReader</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
625 public static XmlReader ToXmlReader(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
626 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
627 if (p == null || p is DBNull) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
628
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
629 if (p is XmlReader) return (XmlReader)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
630
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
631 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
632 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
633 if (p is String) return ToXmlReader((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
634
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
635 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
636 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
637 if (p is SqlXml) return ToXmlReader((SqlXml)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
638 if (p is SqlString) return ToXmlReader((SqlString)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
639 if (p is SqlChars) return ToXmlReader((SqlChars)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
640 if (p is SqlBinary) return ToXmlReader((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
641
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
642 // Other Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
643 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
644 if (p is XmlDocument) return ToXmlReader((XmlDocument)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
645
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
646 if (p is Char[]) return ToXmlReader((Char[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
647 if (p is Byte[]) return ToXmlReader((Byte[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
648 if (p is Binary) return ToXmlReader(((Binary)p).ToArray());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
649
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
650 throw CreateInvalidCastException(p.GetType(), typeof(XmlReader));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
651 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
652
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
653 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
654
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
655 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
656
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
657 #region XmlDocument
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
658
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
659 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
660
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
661 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
662 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
663 /// <summary>Converts the value from <c>String</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
664 public static XmlDocument ToXmlDocument(String p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
665 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
666 if (string.IsNullOrEmpty(p)) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
667
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
668 var doc = new XmlDocument();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
669
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
670 doc.LoadXml(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
671
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
672 return doc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
673 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
674
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
675 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
676 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
677 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
678 public static XmlDocument ToXmlDocument(SqlString p) { return p.IsNull? null: ToXmlDocument(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
679 /// <summary>Converts the value from <c>SqlXml</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
680 public static XmlDocument ToXmlDocument(SqlXml p) { return p.IsNull? null: ToXmlDocument(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
681 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
682 public static XmlDocument ToXmlDocument(SqlChars p) { return p.IsNull? null: ToXmlDocument(p.ToSqlString().Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
683 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
684 public static XmlDocument ToXmlDocument(SqlBinary p) { return p.IsNull? null: ToXmlDocument(new MemoryStream(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
685
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
686 // Other Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
687 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
688 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
689 public static XmlDocument ToXmlDocument(Stream p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
690 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
691 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
692
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
693 var doc = new XmlDocument();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
694
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
695 doc.Load(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
696
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
697 return doc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
698 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
699
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
700 /// <summary>Converts the value from <c>TextReader</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
701 public static XmlDocument ToXmlDocument(TextReader p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
702 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
703 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
704
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
705 var doc = new XmlDocument();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
706
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
707 doc.Load(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
708
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
709 return doc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
710 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
711
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
712 /// <summary>Converts the value from <c>XmlReader</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
713 public static XmlDocument ToXmlDocument(XmlReader p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
714 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
715 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
716
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
717 var doc = new XmlDocument();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
718
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
719 doc.Load(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
720
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
721 return doc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
722 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
723
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
724 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
725 public static XmlDocument ToXmlDocument(Char[] p) { return p == null || p.Length == 0? null: ToXmlDocument(new string(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
726 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
727 public static XmlDocument ToXmlDocument(Byte[] p) { return p == null || p.Length == 0? null: ToXmlDocument(new MemoryStream(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
728 public static XmlDocument ToXmlDocument(Binary p) { return p == null || p.Length == 0? null: ToXmlDocument(new MemoryStream(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
729
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
730 /// <summary>Converts the value of a specified object to an equivalent <c>XmlDocument</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
731 public static XmlDocument ToXmlDocument(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
732 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
733 if (p == null || p is DBNull) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
734
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
735 if (p is XmlDocument) return (XmlDocument)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
736
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
737 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
738 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
739 if (p is String) return ToXmlDocument((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
740
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
741 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
742 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
743 if (p is SqlChars) return ToXmlDocument((SqlChars)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
744 if (p is SqlBinary) return ToXmlDocument((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
745
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
746 // Other Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
747 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
748
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
749 if (p is Char[]) return ToXmlDocument((Char[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
750 if (p is Byte[]) return ToXmlDocument((Byte[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
751 if (p is Binary) return ToXmlDocument(((Binary)p).ToArray());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
752
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
753 throw CreateInvalidCastException(p.GetType(), typeof(XmlDocument));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
754 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
755
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
756 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
757
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
758 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
759
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
760 #region XElement
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
761
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
762 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
763
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
764 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
765 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
766 /// <summary>Converts the value from <c>String</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
767 public static XElement ToXElement(String p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
768 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
769 if (string.IsNullOrEmpty(p)) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
770
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
771 var doc = XElement.Parse(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
772
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
773 return doc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
774 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
775
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
776 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
777 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
778 /// <summary>Converts the value from <c>SqlString</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
779 public static XElement ToXElement(SqlString p) { return p.IsNull ? null : ToXElement(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
780 /// <summary>Converts the value from <c>SqlXml</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
781 public static XElement ToXElement(SqlXml p) { return p.IsNull ? null : ToXElement(p.Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
782 /// <summary>Converts the value from <c>SqlChars</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
783 public static XElement ToXElement(SqlChars p) { return p.IsNull ? null : ToXElement(p.ToSqlString().Value); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
784 /// <summary>Converts the value from <c>SqlBinary</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
785 public static XElement ToXElement(SqlBinary p) { return p.IsNull ? null : ToXElement(new MemoryStream(p.Value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
786
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
787 // Other Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
788 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
789 /// <summary>Converts the value from <c>Stream</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
790 public static XElement ToXElement(Stream p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
791 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
792 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
793
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
794 using (XmlReader r = XmlReader.Create(p))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
795 return XElement.Load(r);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
796 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
797
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
798 /// <summary>Converts the value from <c>TextReader</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
799 public static XElement ToXElement(TextReader p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
800 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
801 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
802
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
803 var doc = XElement.Load(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
804
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
805 return doc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
806 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
807
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
808 /// <summary>Converts the value from <c>XmlReader</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
809 public static XElement ToXElement(XmlReader p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
810 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
811 if (p == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
812
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
813 var doc = XElement.Load(p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
814
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
815 return doc;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
816 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
817
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
818 /// <summary>Converts the value from <c>Char[]</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
819 public static XElement ToXElement(Char[] p) { return p == null || p.Length == 0 ? null : ToXElement(new string(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
820 /// <summary>Converts the value from <c>Byte[]</c> to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
821 public static XElement ToXElement(Byte[] p) { return p == null || p.Length == 0 ? null : ToXElement(new MemoryStream(p)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
822 public static XElement ToXElement(Binary p) { return p == null || p.Length == 0 ? null : ToXElement(new MemoryStream(p.ToArray())); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
823
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
824 /// <summary>Converts the value of a specified object to an equivalent <c>XElement</c> value.</summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
825 public static XElement ToXElement(object p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
826 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
827 if (p == null || p is DBNull) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
828
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
829 if (p is XElement) return (XElement)p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
830
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
831 // Scalar Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
832 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
833 if (p is String) return ToXElement((String)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
834
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
835 // SqlTypes
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
836 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
837 if (p is SqlChars) return ToXElement((SqlChars)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
838 if (p is SqlBinary) return ToXElement((SqlBinary)p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
839
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
840 // Other Types.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
841 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
842
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
843 if (p is Char[]) return ToXElement((Char[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
844 if (p is Byte[]) return ToXElement((Byte[])p);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
845 if (p is Binary) return ToXElement(((Binary)p).ToArray());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
846
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
847 throw CreateInvalidCastException(p.GetType(), typeof(XElement));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
848 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
849
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
850 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
851
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
852 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
853
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
854 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
855
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
856 #region ChangeTypeFromString
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
857
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
858 public static object ChangeTypeFromString(string str, Type type)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
859 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
860 if (str == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
861 return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
862
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
863 if (type == typeof(string))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
864 return str;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
865
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
866 var underlyingType = type;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
867 var isNullable = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
868
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
869 if (underlyingType.IsGenericType && underlyingType.GetGenericTypeDefinition() == typeof(Nullable<>))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
870 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
871 isNullable = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
872 underlyingType = underlyingType.GetGenericArguments()[0];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
873 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
874
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
875 if (underlyingType.IsEnum)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
876 return Enum.Parse(type, str, false);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
877
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
878 if (isNullable)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
879 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
880 switch (Type.GetTypeCode(underlyingType))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
881 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
882 case TypeCode.Boolean : return ToNullableBoolean (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
883 case TypeCode.Char : return ToNullableChar (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
884 case TypeCode.SByte : return ToNullableSByte (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
885 case TypeCode.Byte : return ToNullableByte (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
886 case TypeCode.Int16 : return ToNullableInt16 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
887 case TypeCode.UInt16 : return ToNullableUInt16 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
888 case TypeCode.Int32 : return ToNullableInt32 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
889 case TypeCode.UInt32 : return ToNullableUInt32 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
890 case TypeCode.Int64 : return ToNullableInt64 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
891 case TypeCode.UInt64 : return ToNullableUInt64 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
892 case TypeCode.Single : return ToNullableSingle (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
893 case TypeCode.Double : return ToNullableDouble (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
894 case TypeCode.Decimal : return ToNullableDecimal (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
895 case TypeCode.DateTime : return ToNullableDateTime(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
896 case TypeCode.Object :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
897 if (type == typeof(Guid)) return ToNullableGuid (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
898 if (type == typeof(DateTimeOffset)) return ToNullableDateTimeOffset(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
899 if (type == typeof(TimeSpan)) return ToNullableTimeSpan (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
900 break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
901 default : break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
902 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
903 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
904 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
905 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
906 switch (Type.GetTypeCode(underlyingType))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
907 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
908 case TypeCode.Boolean : return ToBoolean(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
909 case TypeCode.Char : return ToChar (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
910 case TypeCode.SByte : return ToSByte (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
911 case TypeCode.Byte : return ToByte (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
912 case TypeCode.Int16 : return ToInt16 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
913 case TypeCode.UInt16 : return ToUInt16 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
914 case TypeCode.Int32 : return ToInt32 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
915 case TypeCode.UInt32 : return ToUInt32 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
916 case TypeCode.Int64 : return ToInt64 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
917 case TypeCode.UInt64 : return ToUInt64 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
918 case TypeCode.Single : return ToSingle (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
919 case TypeCode.Double : return ToDouble (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
920 case TypeCode.Decimal : return ToDecimal (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
921 case TypeCode.DateTime : return ToDateTime(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
922 default : break;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
923 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
924
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
925 if (type.IsArray)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
926 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
927 if (type == typeof(byte[])) return ToByteArray(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
928 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
929
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
930 if (type.IsClass)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
931 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
932 if (type == typeof(Binary)) return ToLinqBinary (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
933 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
934 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
935
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
936 if (type == typeof(Guid)) return ToGuid (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
937 if (type == typeof(DateTimeOffset)) return ToDateTimeOffset(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
938 if (type == typeof(TimeSpan)) return ToTimeSpan (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
939
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
940 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
941
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
942 if (type == typeof(SqlByte)) return ToSqlByte (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
943 if (type == typeof(SqlInt16)) return ToSqlInt16 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
944 if (type == typeof(SqlInt32)) return ToSqlInt32 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
945 if (type == typeof(SqlInt64)) return ToSqlInt64 (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
946 if (type == typeof(SqlSingle)) return ToSqlSingle (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
947 if (type == typeof(SqlBoolean)) return ToSqlBoolean (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
948 if (type == typeof(SqlDouble)) return ToSqlDouble (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
949 if (type == typeof(SqlDateTime)) return ToSqlDateTime(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
950 if (type == typeof(SqlDecimal)) return ToSqlDecimal (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
951 if (type == typeof(SqlMoney)) return ToSqlMoney (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
952 if (type == typeof(SqlString)) return ToSqlString (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
953 if (type == typeof(SqlGuid)) return ToSqlGuid (str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
954
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
955 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
956
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
957 return System.Convert.ChangeType(str, type, Thread.CurrentThread.CurrentCulture);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
958 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
959
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
960
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
961 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
962
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
963 static Exception CreateInvalidCastException(Type originalType, Type conversionType)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
964 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
965 return new InvalidCastException(string.Format(Resources.Convert_InvalidCast, originalType.FullName, conversionType.FullName));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
966 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
967 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
968 }