0
|
1 <#@ template language="C#" debug="True" #>
|
|
2 <#@ output extension="generated.cs" #>
|
|
3 //---------------------------------------------------------------------------------------------------
|
|
4 // <auto-generated>
|
|
5 // This code was generated by BLToolkit template for T4.
|
|
6 // Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
7 // </auto-generated>
|
|
8 //---------------------------------------------------------------------------------------------------
|
|
9 using System;
|
|
10 using System.Data.SqlTypes;
|
|
11 using System.IO;
|
|
12 using System.Xml;
|
|
13
|
|
14 using Convert = BLToolkit.Common.Convert;
|
|
15
|
|
16 namespace BLToolkit.Mapping
|
|
17 {
|
|
18 public partial class MemberMapper
|
|
19 {
|
|
20 <#
|
|
21 CreateMapper(SimpleMapper,
|
|
22 "SByte", "Int16", "Int32", "Int64",
|
|
23 "Byte", "UInt16", "UInt32", "UInt64",
|
|
24 "Single", "Double", "Char", "Boolean",
|
|
25 "DateTime", "DateTimeOffset", "Decimal", "Guid", "Stream");
|
|
26 CreateMapper(EnumNullableMapper, "SByte", "Int16", "Int32", "Int64", "Byte", "UInt16", "UInt32", "UInt64");
|
|
27 CreateMapper(NullableMapper, "Char", "Double", "Single", "Boolean", "DateTime", "Decimal", "Guid");
|
|
28 #>
|
|
29
|
|
30 #if !SILVERLIGHT
|
|
31 <#
|
|
32 CreateMapper(SimpleMapper, "XmlReader", "XmlDocument");
|
|
33 CreateMapper(SqlTypeMapper, "Byte", "Int16", "Int32", "Int64", "Single", "Boolean", "Double", "DateTime", "Decimal", "Money", "Guid", "String");
|
|
34 #>
|
|
35
|
|
36 #endif
|
|
37 }
|
|
38 }
|
|
39
|
|
40 <#+
|
|
41 void CreateMapper(Action<string> mapper, params string[] types)
|
|
42 {
|
|
43 foreach (string t in types)
|
|
44 mapper(t);
|
|
45 }
|
|
46
|
|
47 void SimpleMapper(string type)
|
|
48 {
|
|
49 string getset = type;
|
|
50 string cast = "(" + type + ")";
|
|
51
|
|
52 switch (type)
|
|
53 {
|
|
54 case "Stream" :
|
|
55 case "XmlReader" :
|
|
56 case "XmlDocument" :
|
|
57 getset = "Value";
|
|
58 cast = "";
|
|
59 break;
|
|
60 }
|
|
61
|
|
62 #>
|
|
63
|
|
64 class <#= type #>Mapper : MemberMapper
|
|
65 {
|
|
66 <#= type #> _nullValue;
|
|
67 <#+
|
|
68 switch (type)
|
|
69 {
|
|
70 case "Stream" :
|
|
71 case "XmlReader" :
|
|
72 case "XmlDocument" :
|
|
73 break;
|
|
74 default :
|
|
75 #>
|
|
76
|
|
77 public override bool IsNull (object o) { return false; }
|
|
78 public override void SetNull(object o) { MemberAccessor.Set<#= type #>(o, _nullValue); }
|
|
79 <#+
|
|
80 break;
|
|
81 }
|
|
82 #>
|
|
83
|
|
84 public override void SetValue(object o, object value)
|
|
85 {
|
|
86 MemberAccessor.Set<#= getset #>(
|
|
87 o,
|
|
88 value is <#= type #> ? <#= cast #>value :
|
|
89 value == null ? _nullValue : MappingSchema.ConvertTo<#= type #>(value));
|
|
90 }
|
|
91
|
|
92 public override void Init(MapMemberInfo mapMemberInfo)
|
|
93 {
|
|
94 if (mapMemberInfo == null) throw new ArgumentNullException("mapMemberInfo");
|
|
95 <#+
|
|
96 switch (type)
|
|
97 {
|
|
98 case "Guid" :
|
|
99 #>
|
|
100
|
|
101 if (mapMemberInfo.NullValue != null)
|
|
102 _nullValue = mapMemberInfo.NullValue is Guid ?
|
|
103 (Guid)mapMemberInfo.NullValue : new Guid(mapMemberInfo.NullValue.ToString());
|
|
104 <#+
|
|
105 break;
|
|
106
|
|
107 case "Stream" :
|
|
108 case "XmlReader" :
|
|
109 case "XmlDocument" :
|
|
110 #>
|
|
111
|
|
112 if (mapMemberInfo.NullValue != null)
|
|
113 _nullValue = mapMemberInfo.MappingSchema.ConvertTo<#= type #>(mapMemberInfo.NullValue);
|
|
114 <#+
|
|
115 break;
|
|
116
|
|
117 default:
|
|
118 #>
|
|
119
|
|
120 _nullValue = Convert.To<#= type #>(mapMemberInfo.NullValue);
|
|
121 <#+
|
|
122
|
|
123 break;
|
|
124 }
|
|
125 #>
|
|
126
|
|
127 base.Init(mapMemberInfo);
|
|
128 }
|
|
129
|
|
130 public class Nullable : <#= type #>Mapper
|
|
131 {
|
|
132 <#+
|
|
133 switch (type)
|
|
134 {
|
|
135 case "Stream" :
|
|
136 case "XmlReader" :
|
|
137 case "XmlDocument" :
|
|
138 break;
|
|
139 default:
|
|
140 #>
|
|
141 public override bool IsNull(object o) { return Get<#= type #>(o) == _nullValue; }
|
|
142
|
|
143 <#+
|
|
144
|
|
145 break;
|
|
146 }
|
|
147 #>
|
|
148 public override object GetValue(object o)
|
|
149 {
|
|
150 var value = MemberAccessor.Get<#= getset #>(o);
|
|
151 return value == _nullValue ? null : (object)value;
|
|
152 }
|
|
153 }
|
|
154 }
|
|
155 <#+
|
|
156 }
|
|
157
|
|
158 void NullableMapper(string type)
|
|
159 {
|
|
160 #>
|
|
161
|
|
162 class Nullable<#= type #>Mapper : MemberMapper
|
|
163 {
|
|
164 public override bool IsNull (object o) { return GetNullable<#= type #>(o) == null; }
|
|
165 public override void SetNull(object o) { MemberAccessor.SetNullable<#= type #>(o, null); }
|
|
166
|
|
167 public override void SetValue(object o, object value)
|
|
168 {
|
|
169 MemberAccessor.SetNullable<#= type #>(
|
|
170 o, value == null || value is <#= type #>? (<#= type #>?)value: MappingSchema.ConvertToNullable<#= type #>(value));
|
|
171 }
|
|
172 }
|
|
173 <#+
|
|
174 }
|
|
175
|
|
176 void EnumNullableMapper(string type)
|
|
177 {
|
|
178 #>
|
|
179
|
|
180 class Nullable<#= type #>Mapper : MemberMapper
|
|
181 {
|
|
182 public override bool IsNull (object o) { return GetNullable<#= type #>(o) == null; }
|
|
183 public override void SetNull(object o) { MemberAccessor.SetNullable<#= type #>(o, null); }
|
|
184
|
|
185 public override void SetValue(object o, object value)
|
|
186 {
|
|
187 MemberAccessor.SetNullable<#= type #>(
|
|
188 o, value == null || value is <#= type #>? (<#= type #>?)value: MappingSchema.ConvertToNullable<#= type #>(value));
|
|
189 }
|
|
190
|
|
191 public class Enum : NullableEnumMapper
|
|
192 {
|
|
193 public override void SetValue(object o, object value)
|
|
194 {
|
|
195 if (value != null)
|
|
196 {
|
|
197 var valueType = value.GetType();
|
|
198
|
|
199 if (valueType != MemberType)
|
|
200 {
|
|
201 if (valueType != UnderlyingType)
|
|
202 value = MappingSchema.ConvertToNullable<#= type #>(value);
|
|
203
|
|
204 value = System.Enum.ToObject(MemberType, (<#= type #>)value);
|
|
205 }
|
|
206 }
|
|
207
|
|
208 MemberAccessor.SetValue(o, value);
|
|
209 }
|
|
210 }
|
|
211 }
|
|
212 <#+
|
|
213 }
|
|
214
|
|
215 void SqlTypeMapper(string type)
|
|
216 {
|
|
217 #>
|
|
218
|
|
219 class Sql<#= type #>Mapper : MemberMapper
|
|
220 {
|
|
221 public override bool IsNull (object o) { return GetSql<#= type #>(o).IsNull; }
|
|
222 public override void SetNull(object o) { MemberAccessor.SetSql<#= type #>(o, Sql<#= type #>.Null); }
|
|
223
|
|
224 public override object GetValue(object o)
|
|
225 {
|
|
226 var value = MemberAccessor.GetSql<#= type #>(o);
|
|
227 return value.IsNull? null: (object)value.Value;
|
|
228 }
|
|
229
|
|
230 public override void SetValue(object o, object value)
|
|
231 {
|
|
232 MemberAccessor.SetSql<#= type #>(
|
|
233 o, value is Sql<#= type #>? (Sql<#= type #>)value: MappingSchema.ConvertToSql<#= type #>(value));
|
|
234 }
|
|
235
|
|
236 public class Default : Sql<#= type #>Mapper
|
|
237 {
|
|
238 public override bool SupportsValue { get { return false; } }
|
|
239
|
|
240 public override object GetValue(object o)
|
|
241 {
|
|
242 return MapTo(base.GetValue(o));
|
|
243 }
|
|
244
|
|
245 public override void SetValue(object o, object value)
|
|
246 {
|
|
247 base.SetValue(o, MapFrom(value));
|
|
248 }
|
|
249 }
|
|
250 }
|
|
251 <#+
|
|
252 }
|
|
253
|
|
254 #>
|