@@ -19,6 +19,12 @@ public MultipleResultDeserializer(IDeserializerFactory deserializerFactory)
1919 _deserializerFactory = deserializerFactory ;
2020 _setAccessorFactory = new EmitSetAccessorFactory ( ) ;
2121 }
22+
23+ public bool CanDeserialize ( ExecutionContext executionContext , Type resultType , bool isMultiple = false )
24+ {
25+ return isMultiple ;
26+ }
27+
2228 public TResult ToSinge < TResult > ( ExecutionContext executionContext )
2329 {
2430 TResult result = default ;
@@ -27,7 +33,7 @@ public TResult ToSinge<TResult>(ExecutionContext executionContext)
2733 var multipleResultMap = executionContext . Request . MultipleResultMap ;
2834 if ( multipleResultMap . Root != null )
2935 {
30- var deser = _deserializerFactory . Get ( executionContext . Result . ResultType ) ;
36+ var deser = _deserializerFactory . Get ( executionContext , executionContext . Result . ResultType ) ;
3137 result = deser . ToSinge < TResult > ( executionContext ) ;
3238 if ( result == null )
3339 {
@@ -44,7 +50,7 @@ public TResult ToSinge<TResult>(ExecutionContext executionContext)
4450 #region Set Muti Property
4551 var propertyInfo = resultType . GetProperty ( resultMap . Property ) ;
4652 var setProperty = _setAccessorFactory . Create ( propertyInfo ) ;
47- var deser = _deserializerFactory . Get ( propertyInfo . PropertyType ) ;
53+ var deser = _deserializerFactory . Get ( executionContext , propertyInfo . PropertyType ) ;
4854 var resultMapResult = TypeDeserializer . Deserialize ( propertyInfo . PropertyType , deser , executionContext ) ;
4955 setProperty ( result , resultMapResult ) ;
5056 #endregion
@@ -64,7 +70,7 @@ public async Task<TResult> ToSingeAsync<TResult>(ExecutionContext executionConte
6470 var multipleResultMap = executionContext . Request . MultipleResultMap ;
6571 if ( multipleResultMap . Root != null )
6672 {
67- var deser = _deserializerFactory . Get ( executionContext . Result . ResultType ) ;
73+ var deser = _deserializerFactory . Get ( executionContext ) ;
6874 result = deser . ToSinge < TResult > ( executionContext ) ;
6975 if ( result == null )
7076 {
@@ -81,8 +87,8 @@ public async Task<TResult> ToSingeAsync<TResult>(ExecutionContext executionConte
8187 #region Set Muti Property
8288 var propertyInfo = resultType . GetProperty ( resultMap . Property ) ;
8389 var setProperty = _setAccessorFactory . Create ( propertyInfo ) ;
84- var deser = _deserializerFactory . Get ( propertyInfo . PropertyType ) ;
85-
90+ var deser = _deserializerFactory . Get ( executionContext , propertyInfo . PropertyType ) ;
91+
8692 var resultMapResult = TypeDeserializer . Deserialize ( propertyInfo . PropertyType , deser , executionContext ) ;
8793 setProperty ( result , resultMapResult ) ;
8894 #endregion
0 commit comments