annotate Source/Mapping/ScalarListMapperT.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.Common;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 namespace BLToolkit.Mapping
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 public class ScalarListMapper<T> : MapDataDestinationBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 public ScalarListMapper(MappingSchema mappingSchema, IList<T> list)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 _list = list;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 _mappingSchema = mappingSchema;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 _nullValue = (T)mappingSchema.GetNullValue(_type);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 _isNullable = _type.IsGenericType && _type.GetGenericTypeDefinition() == typeof(Nullable<>);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 _underlyingType = _isNullable? Nullable.GetUnderlyingType(_type): _type;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 private readonly IList<T> _list;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 private readonly MappingSchema _mappingSchema;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 private readonly T _nullValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 private readonly bool _isNullable;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 private readonly Type _type = typeof(T);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 private readonly Type _underlyingType;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 #region IMapDataDestination Members
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 public override Type GetFieldType(int index) { return _type; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public override int GetOrdinal (string name) { return 0; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 public override void SetValue (object o, int index, object value) { _list.Add((T)_mappingSchema.ConvertChangeType(value, _underlyingType, _isNullable)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 public override void SetValue (object o, string name, object value) { _list.Add((T)_mappingSchema.ConvertChangeType(value, _underlyingType, _isNullable)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 public override void SetNull (object o, int index) { _list.Add(_nullValue); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public override bool SupportsTypedValues(int index) { return true; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 // Simple types setters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public override void SetSByte (object o, int index, SByte value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 public override void SetInt16 (object o, int index, Int16 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public override void SetInt32 (object o, int index, Int32 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public override void SetInt64 (object o, int index, Int64 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 public override void SetByte (object o, int index, Byte value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public override void SetUInt16 (object o, int index, UInt16 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 public override void SetUInt32 (object o, int index, UInt32 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public override void SetUInt64 (object o, int index, UInt64 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public override void SetBoolean (object o, int index, Boolean value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 public override void SetChar (object o, int index, Char value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public override void SetSingle (object o, int index, Single value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 public override void SetDouble (object o, int index, Double value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 public override void SetDecimal (object o, int index, Decimal value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public override void SetGuid (object o, int index, Guid value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public override void SetDateTime (object o, int index, DateTime value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 public override void SetDateTimeOffset(object o, int index, DateTimeOffset value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 // Nullable types setters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 public override void SetNullableSByte (object o, int index, SByte? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 public override void SetNullableInt16 (object o, int index, Int16? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 public override void SetNullableInt32 (object o, int index, Int32? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 public override void SetNullableInt64 (object o, int index, Int64? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 public override void SetNullableByte (object o, int index, Byte? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 public override void SetNullableUInt16 (object o, int index, UInt16? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public override void SetNullableUInt32 (object o, int index, UInt32? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 [CLSCompliant(false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 public override void SetNullableUInt64 (object o, int index, UInt64? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 public override void SetNullableBoolean (object o, int index, Boolean? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public override void SetNullableChar (object o, int index, Char? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 public override void SetNullableSingle (object o, int index, Single? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 public override void SetNullableDouble (object o, int index, Double? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public override void SetNullableDecimal (object o, int index, Decimal? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 public override void SetNullableGuid (object o, int index, Guid? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 public override void SetNullableDateTime(object o, int index, DateTime? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 public override void SetNullableDateTimeOffset(object o, int index, DateTimeOffset? value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 #if !SILVERLIGHT
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 // SQL type setters.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public override void SetSqlByte (object o, int index, SqlByte value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 public override void SetSqlInt16 (object o, int index, SqlInt16 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 public override void SetSqlInt32 (object o, int index, SqlInt32 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 public override void SetSqlInt64 (object o, int index, SqlInt64 value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 public override void SetSqlSingle (object o, int index, SqlSingle value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 public override void SetSqlBoolean (object o, int index, SqlBoolean value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 public override void SetSqlDouble (object o, int index, SqlDouble value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 public override void SetSqlDateTime(object o, int index, SqlDateTime value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 public override void SetSqlDecimal (object o, int index, SqlDecimal value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 public override void SetSqlMoney (object o, int index, SqlMoney value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 public override void SetSqlGuid (object o, int index, SqlGuid value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 public override void SetSqlString (object o, int index, SqlString value) { _list.Add(ConvertTo<T>.From(value)); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 }