|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.CodeDom;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
namespace System.Windows.Forms.Design;
public partial class ControlDesigner
{
// Custom code dom serializer for the DesignerControlCollection. We need this so we can filter out controls
// that aren't sited in the host's container.
internal class DesignerControlCollectionCodeDomSerializer : CollectionCodeDomSerializer
{
protected override object? SerializeCollection(
IDesignerSerializationManager manager,
CodeExpression? targetExpression,
Type targetType,
ICollection originalCollection,
ICollection valuesToSerialize)
{
List<IComponent> subset = [];
if (valuesToSerialize is not null && valuesToSerialize.Count > 0)
{
foreach (object val in valuesToSerialize)
{
if (val is IComponent { Site: not null and not INestedSite } comp)
{
subset.Add(comp);
}
}
}
return base.SerializeCollection(manager, targetExpression, targetType, originalCollection, subset);
}
}
}
|