1
- // Copyright (C) 2003- 2012 Xtensive LLC.
2
- // All rights reserved .
3
- // For conditions of distribution and use, see license .
1
+ // Copyright (C) 2012-2021 Xtensive LLC.
2
+ // This code is distributed under MIT license terms .
3
+ // See the License.txt file in the project root for more information .
4
4
// Created by: Denis Krjuchkov
5
5
// Created: 2012.12.29
6
6
@@ -63,6 +63,8 @@ private static class ValueFieldAccessorResolver
63
63
private static readonly Type NullableDecimalType = typeof ( decimal ? ) ;
64
64
private static readonly Type GuidType = typeof ( Guid ) ;
65
65
private static readonly Type NullableGuidType = typeof ( Guid ? ) ;
66
+ private static readonly Type DateTimeOffsetType = typeof ( DateTimeOffset ) ;
67
+ private static readonly Type NullableDateTimeOffsetType = typeof ( DateTimeOffset ? ) ;
66
68
67
69
private static readonly ValueFieldAccessor BoolAccessor = new BooleanFieldAccessor ( ) ;
68
70
private static readonly ValueFieldAccessor ByteAccessor = new ByteFieldAccessor ( ) ;
@@ -79,48 +81,55 @@ private static class ValueFieldAccessorResolver
79
81
private static readonly ValueFieldAccessor TimeSpanAccessor = new TimeSpanFieldAccessor ( ) ;
80
82
private static readonly ValueFieldAccessor DecimalAccessor = new DecimalFieldAccessor ( ) ;
81
83
private static readonly ValueFieldAccessor GuidAccessor = new GuidFieldAccessor ( ) ;
84
+ private static readonly ValueFieldAccessor DateTimeOffsetAccessor = new DateTimeOffsetFieldAccessor ( ) ;
82
85
83
86
private static readonly int NullableTypeMetadataToken = typeof ( Nullable < > ) . MetadataToken ;
84
87
85
88
public static ValueFieldAccessor GetValue ( Type probeType )
86
89
{
87
- ValueFieldAccessor ResolveByType ( Type type ) =>
88
- ReferenceEquals ( type , BoolType ) ? BoolAccessor :
89
- ReferenceEquals ( type , ByteType ) ? ByteAccessor :
90
- ReferenceEquals ( type , SByteType ) ? SByteAccessor :
91
- ReferenceEquals ( type , Int16Type ) ? Int16Accessor :
92
- ReferenceEquals ( type , UInt16Type ) ? UInt16Accessor :
93
- ReferenceEquals ( type , Int32Type ) ? Int32Accessor :
94
- ReferenceEquals ( type , UInt32Type ) ? UInt32Accessor :
95
- ReferenceEquals ( type , Int64Type ) ? Int64Accessor :
96
- ReferenceEquals ( type , UInt64Type ) ? UInt64Accessor :
97
- ReferenceEquals ( type , SingleType ) ? SingleAccessor :
98
- ReferenceEquals ( type , DoubleType ) ? DoubleAccessor :
99
- ReferenceEquals ( type , DateTimeType ) ? DateTimeAccessor :
100
- ReferenceEquals ( type , TimeSpanType ) ? TimeSpanAccessor :
101
- ReferenceEquals ( type , DecimalType ) ? DecimalAccessor :
102
- ReferenceEquals ( type , GuidType ) ? GuidAccessor : null ;
103
-
104
- ValueFieldAccessor ResolveByNullableType ( Type type ) =>
105
- ReferenceEquals ( type , NullableBoolType ) ? BoolAccessor :
106
- ReferenceEquals ( type , NullableByteType ) ? ByteAccessor :
107
- ReferenceEquals ( type , NullableSByteType ) ? SByteAccessor :
108
- ReferenceEquals ( type , NullableInt16Type ) ? Int16Accessor :
109
- ReferenceEquals ( type , NullableUInt16Type ) ? UInt16Accessor :
110
- ReferenceEquals ( type , NullableInt32Type ) ? Int32Accessor :
111
- ReferenceEquals ( type , NullableUInt32Type ) ? UInt32Accessor :
112
- ReferenceEquals ( type , NullableInt64Type ) ? Int64Accessor :
113
- ReferenceEquals ( type , NullableUInt64Type ) ? UInt64Accessor :
114
- ReferenceEquals ( type , NullableSingleType ) ? SingleAccessor :
115
- ReferenceEquals ( type , NullableDoubleType ) ? DoubleAccessor :
116
- ReferenceEquals ( type , NullableDateTimeType ) ? DateTimeAccessor :
117
- ReferenceEquals ( type , NullableTimeSpanType ) ? TimeSpanAccessor :
118
- ReferenceEquals ( type , NullableDecimalType ) ? DecimalAccessor :
119
- ReferenceEquals ( type , NullableGuidType ) ? GuidAccessor : null ;
120
-
121
90
return ( probeType . MetadataToken ^ NullableTypeMetadataToken ) == 0
122
91
? ResolveByNullableType ( probeType )
123
92
: ResolveByType ( probeType ) ;
93
+
94
+ ValueFieldAccessor ResolveByType ( Type type )
95
+ {
96
+ return ReferenceEquals ( type , BoolType ) ? BoolAccessor :
97
+ ReferenceEquals ( type , ByteType ) ? ByteAccessor :
98
+ ReferenceEquals ( type , SByteType ) ? SByteAccessor :
99
+ ReferenceEquals ( type , Int16Type ) ? Int16Accessor :
100
+ ReferenceEquals ( type , UInt16Type ) ? UInt16Accessor :
101
+ ReferenceEquals ( type , Int32Type ) ? Int32Accessor :
102
+ ReferenceEquals ( type , UInt32Type ) ? UInt32Accessor :
103
+ ReferenceEquals ( type , Int64Type ) ? Int64Accessor :
104
+ ReferenceEquals ( type , UInt64Type ) ? UInt64Accessor :
105
+ ReferenceEquals ( type , SingleType ) ? SingleAccessor :
106
+ ReferenceEquals ( type , DoubleType ) ? DoubleAccessor :
107
+ ReferenceEquals ( type , DateTimeType ) ? DateTimeAccessor :
108
+ ReferenceEquals ( type , TimeSpanType ) ? TimeSpanAccessor :
109
+ ReferenceEquals ( type , DecimalType ) ? DecimalAccessor :
110
+ ReferenceEquals ( type , GuidType ) ? GuidAccessor :
111
+ ReferenceEquals ( type , DateTimeOffsetType ) ? DateTimeOffsetAccessor : null ;
112
+ }
113
+
114
+ ValueFieldAccessor ResolveByNullableType ( Type type )
115
+ {
116
+ return ReferenceEquals ( type , NullableBoolType ) ? BoolAccessor :
117
+ ReferenceEquals ( type , NullableByteType ) ? ByteAccessor :
118
+ ReferenceEquals ( type , NullableSByteType ) ? SByteAccessor :
119
+ ReferenceEquals ( type , NullableInt16Type ) ? Int16Accessor :
120
+ ReferenceEquals ( type , NullableUInt16Type ) ? UInt16Accessor :
121
+ ReferenceEquals ( type , NullableInt32Type ) ? Int32Accessor :
122
+ ReferenceEquals ( type , NullableUInt32Type ) ? UInt32Accessor :
123
+ ReferenceEquals ( type , NullableInt64Type ) ? Int64Accessor :
124
+ ReferenceEquals ( type , NullableUInt64Type ) ? UInt64Accessor :
125
+ ReferenceEquals ( type , NullableSingleType ) ? SingleAccessor :
126
+ ReferenceEquals ( type , NullableDoubleType ) ? DoubleAccessor :
127
+ ReferenceEquals ( type , NullableDateTimeType ) ? DateTimeAccessor :
128
+ ReferenceEquals ( type , NullableTimeSpanType ) ? TimeSpanAccessor :
129
+ ReferenceEquals ( type , NullableDecimalType ) ? DecimalAccessor :
130
+ ReferenceEquals ( type , NullableGuidType ) ? GuidAccessor :
131
+ ReferenceEquals ( type , NullableDateTimeOffsetType ) ? DateTimeOffsetAccessor : null ;
132
+ }
124
133
}
125
134
}
126
135
0 commit comments