annotate Source/Common/Convert.tt @ 9:1e85f66cf767 default tip

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