@@ -548,6 +548,17 @@ private bool IsNullableValueType
548548 }
549549 }
550550
551+ private bool IsNillableValueType
552+ {
553+ get
554+ {
555+ return IsNillable
556+ && ! IsNullableValueType
557+ && ! ( IsCollection || IsArray )
558+ && ( ( PropertyType is EnumModel ) || ( PropertyType is SimpleModel && ( ( SimpleModel ) PropertyType ) . ValueType . IsValueType ) ) ;
559+ }
560+ }
561+
551562 private CodeTypeReference TypeReference
552563 {
553564 get { return PropertyType . GetReferenceFor ( OwningType . Namespace , IsCollection || IsArray ) ; }
@@ -640,7 +651,16 @@ public void AddMembersTo(CodeTypeDeclaration typeDeclaration, bool withDataBindi
640651 if ( DefaultValue == null )
641652 {
642653 var propertyName = isNullableValueType && Configuration . GenerateNullables ? Name + "Value" : Name ;
643- member = new CodeMemberField ( typeReference , propertyName ) ;
654+
655+ if ( IsNillableValueType )
656+ {
657+ var nullableType = new CodeTypeReference ( typeof ( Nullable < > ) , Configuration . CodeTypeReferenceOptions ) ;
658+ nullableType . TypeArguments . Add ( typeReference ) ;
659+ member = new CodeMemberField ( nullableType , propertyName ) ;
660+ }
661+ else
662+ member = new CodeMemberField ( typeReference , propertyName ) ;
663+
644664 var isPrivateSetter = IsCollection || isArray ;
645665 if ( requiresBackingField )
646666 {
@@ -659,7 +679,15 @@ public void AddMembersTo(CodeTypeDeclaration typeDeclaration, bool withDataBindi
659679 var defaultValueExpression = propertyType . GetDefaultValueFor ( DefaultValue ) ;
660680 backingField . InitExpression = defaultValueExpression ;
661681
662- member = new CodeMemberField ( typeReference , Name ) ;
682+ if ( IsNillableValueType )
683+ {
684+ var nullableType = new CodeTypeReference ( typeof ( Nullable < > ) , Configuration . CodeTypeReferenceOptions ) ;
685+ nullableType . TypeArguments . Add ( typeReference ) ;
686+ member = new CodeMemberField ( nullableType , Name ) ;
687+ }
688+ else
689+ member = new CodeMemberField ( typeReference , Name ) ;
690+
663691 member . Name += GetAccessors ( member . Name , backingField . Name , propertyType . GetPropertyValueTypeCode ( ) , false , withDataBinding ) ;
664692
665693 if ( IsNullable )
0 commit comments