Skip to content

Commit dc3b617

Browse files
committed
MessageModelProvider review
1 parent 38c4680 commit dc3b617

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/Libraries/SmartStore.Services/Messages/MessageModelProvider.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,22 +1177,24 @@ private IEnumerable<TreeNode<ModelTreeMember>> BuildModelTreePartForClass(object
11771177
{
11781178
yield return new TreeNode<ModelTreeMember>(new ModelTreeMember { Name = prop.Name, Kind = ModelTreeMemberKind.Collection });
11791179
}
1180-
else
1180+
else if (pi.PropertyType.IsClass)
11811181
{
11821182
if (instanceLookup == null)
11831183
{
1184-
instanceLookup = new HashSet<object>(ReferenceEqualityComparer.Default);
1184+
instanceLookup = new HashSet<object>(ReferenceEqualityComparer.Default) { instance };
11851185
}
11861186

1187-
var exists = !type.IsValueType && instanceLookup.Contains(instance);
1188-
1189-
if (!exists)
1187+
var childInstance = prop.GetValue(instance);
1188+
if (childInstance != null)
11901189
{
1191-
instanceLookup.Add(instance);
1190+
if (!instanceLookup.Contains(childInstance))
1191+
{
1192+
instanceLookup.Add(childInstance);
11921193

1193-
var node = new TreeNode<ModelTreeMember>(new ModelTreeMember { Name = prop.Name, Kind = ModelTreeMemberKind.Complex });
1194-
node.AppendRange(BuildModelTreePartForClass(prop.GetValue(instance), instanceLookup));
1195-
yield return node;
1194+
var node = new TreeNode<ModelTreeMember>(new ModelTreeMember { Name = prop.Name, Kind = ModelTreeMemberKind.Complex });
1195+
node.AppendRange(BuildModelTreePartForClass(childInstance, instanceLookup));
1196+
yield return node;
1197+
}
11961198
}
11971199
}
11981200
}

0 commit comments

Comments
 (0)