@@ -218,9 +218,9 @@ protected Expression CreateInstantiationExpression(Expression source, ClassMappi
218218 var members = classConverter . Members ;
219219
220220 var arguments = new List < Expression > ( ) ;
221+ arg . Context . NullChecks . UnionWith ( members . Where ( x => x . Getter != null ) . Select ( x => ( x . Getter , arg ) ) ) ;
221222 foreach ( var member in members )
222223 {
223- arg . Context . NullChecks . UnionWith ( members . Where ( x=> x . Getter != null ) . Select ( x=> ( x . Getter , arg ) ) ) ;
224224 var parameterInfo = ( ParameterInfo ) member . DestinationMember . Info ! ;
225225 Expression defaultConst ;
226226 Expression getter ;
@@ -253,12 +253,13 @@ protected Expression CreateInstantiationExpression(Expression source, ClassMappi
253253 else
254254 {
255255
256- if ( member . Getter . CanBeNull ( ) && member . DestinationMember . Type . IsAbstractOrNotPublicCtor ( )
257- && member . Ignore . Condition == null )
256+ if ( member . Getter . CanBeNull ( ) && member . Ignore . Condition == null
257+ && ( member . DestinationMember . Type . IsAbstractOrNotPublicCtor ( )
258+ || member . DestinationMember . Type . UnwrapNullable ( ) . IsRecordType ( ) ) )
258259 {
259260 var compareNull = Expression . Equal ( member . Getter , Expression . Constant ( null , member . Getter . Type ) ) ;
260261 getter = Expression . Condition ( ExpressionEx . Not ( compareNull ) ,
261- CreateAdaptExpression ( member . Getter , member . DestinationMember . Type , arg , member ) ,
262+ CreateAdaptExpressionCore ( member . Getter , member . DestinationMember . Type , arg , member ) ,
262263 defaultConst ) ;
263264 }
264265 else
0 commit comments