Skip to content

Commit fe3d1e9

Browse files
author
Michael Ganss
committed
1 parent 49cd164 commit fe3d1e9

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

XmlSchemaClassGenerator.Tests/XmlTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ private Assembly Compile(string name, string pattern)
4545
IntegerDataType = typeof(int),
4646
DataAnnotationMode = DataAnnotationMode.Partial,
4747
GenerateDesignerCategoryAttribute = false,
48-
EnableDataBinding = true
4948
};
5049

5150
var files = Glob.Glob.ExpandNames(pattern);

XmlSchemaClassGenerator/TypeModel.cs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,20 @@ internal static string GetAccessors(string memberName, string backingFieldName,
415415
}}", backingFieldName, memberName, (privateSetter ? "private " : string.Empty));
416416
}
417417
}
418-
return string.Format(@"
418+
419+
if (privateSetter)
420+
{
421+
return string.Format(@"
422+
{{
423+
get
424+
{{
425+
return this.{0};
426+
}}
427+
}}", backingFieldName);
428+
}
429+
else
430+
{
431+
return string.Format(@"
419432
{{
420433
get
421434
{{
@@ -426,6 +439,7 @@ internal static string GetAccessors(string memberName, string backingFieldName,
426439
this.{0} = value;
427440
}}
428441
}}", backingFieldName, (privateSetter ? "private " : string.Empty));
442+
}
429443
}
430444

431445
// ReSharper disable once FunctionComplexityOverflow
@@ -445,7 +459,7 @@ public void AddMembersTo(CodeTypeDeclaration typeDeclaration, bool withDataBindi
445459
var typeReference = propertyType.GetReferenceFor(OwningType.Namespace, IsCollection || isArray);
446460
var simpleType = propertyType as SimpleModel;
447461

448-
var requiresBackingField = withDataBinding || DefaultValue != null;
462+
var requiresBackingField = withDataBinding || DefaultValue != null || IsCollection || isArray;
449463
var backingField = new CodeMemberField(typeReference, OwningType.GetUniqueFieldName(this))
450464
{
451465
Attributes = MemberAttributes.Private
@@ -635,7 +649,8 @@ public void AddMembersTo(CodeTypeDeclaration typeDeclaration, bool withDataBindi
635649
constructor.Comments.AddRange(DocumentationModel.GetComments(constructorDocs).ToArray());
636650
typeDeclaration.Members.Add(constructor);
637651
}
638-
var listReference = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), Name);
652+
var listReference = requiresBackingField ? (CodeExpression)new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), backingField.Name) :
653+
new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), Name);
639654
var initTypeReference = propertyType.GetReferenceFor(OwningType.Namespace, true, true);
640655
var initExpression = new CodeObjectCreateExpression(initTypeReference);
641656
constructor.Statements.Add(new CodeAssignStatement(listReference, initExpression));

0 commit comments

Comments
 (0)