@@ -473,7 +473,7 @@ private T GetValue<T>(byte item)
473473 IscCodes . isc_info_end
474474 } ;
475475 var info = Connection . InnerConnection . Database . GetDatabaseInfo ( items ) ;
476- return info . Any ( ) ? ( T ) info [ 0 ] : default ;
476+ return info . Any ( ) ? ConvertValue < T > ( info [ 0 ] ) : default ;
477477 }
478478 private async Task < T > GetValueAsync < T > ( byte item , CancellationToken cancellationToken = default )
479479 {
@@ -485,7 +485,7 @@ private async Task<T> GetValueAsync<T>(byte item, CancellationToken cancellation
485485 IscCodes . isc_info_end
486486 } ;
487487 var info = await Connection . InnerConnection . Database . GetDatabaseInfoAsync ( items , cancellationToken ) . ConfigureAwait ( false ) ;
488- return info . Any ( ) ? ( T ) info [ 0 ] : default ;
488+ return info . Any ( ) ? ConvertValue < T > ( info [ 0 ] ) : default ;
489489 }
490490
491491 private List < T > GetList < T > ( byte item )
@@ -499,7 +499,7 @@ private List<T> GetList<T>(byte item)
499499 IscCodes . isc_info_end
500500 } ;
501501
502- return ( db . GetDatabaseInfo ( items ) ) . Cast < T > ( ) . ToList ( ) ;
502+ return ( db . GetDatabaseInfo ( items ) ) . Select ( ConvertValue < T > ) . ToList ( ) ;
503503 }
504504 private async Task < List < T > > GetListAsync < T > ( byte item , CancellationToken cancellationToken = default )
505505 {
@@ -512,9 +512,11 @@ private async Task<List<T>> GetListAsync<T>(byte item, CancellationToken cancell
512512 IscCodes . isc_info_end
513513 } ;
514514
515- return ( await db . GetDatabaseInfoAsync ( items , cancellationToken ) . ConfigureAwait ( false ) ) . Cast < T > ( ) . ToList ( ) ;
515+ return ( await db . GetDatabaseInfoAsync ( items , cancellationToken ) . ConfigureAwait ( false ) ) . Select ( ConvertValue < T > ) . ToList ( ) ;
516516 }
517517
518+ static T ConvertValue < T > ( object value ) => value is IConvertible ? ( T ) Convert . ChangeType ( value , typeof ( T ) ) : ( T ) value ;
519+
518520 #endregion
519521 }
520522}
0 commit comments