File: System\ComponentModel\Design\Serialization\IDesignerSerializationProvider.cs
Web Access
Project: src\src\libraries\System.ComponentModel.TypeConverter\src\System.ComponentModel.TypeConverter.csproj (System.ComponentModel.TypeConverter)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.ComponentModel.Design.Serialization
{
    /// <summary>
    /// This interface defines a custom serialization provider. This
    /// allows outside objects to control serialization by providing
    /// their own serializer objects.
    /// </summary>
    public interface IDesignerSerializationProvider
    {
        /// <summary>
        /// This will be called by the serialization manager when it
        /// is trying to locate a serializer for an object type.
        /// If this serialization provider can provide a serializer
        /// that is of the correct type, it should return it.
        /// Otherwise, it should return null.
        ///
        /// In order to break order dependencies between multiple
        /// serialization providers the serialization manager will
        /// loop through all serialization providers until the
        /// serializer returned reaches steady state. Because
        /// of this you should always check currentSerializer
        /// before returning a new serializer. If currentSerializer
        /// is an instance of your serializer, then you should
        /// either return it or return null to prevent an infinite
        /// loop.
        /// </summary>
        object? GetSerializer(IDesignerSerializationManager manager, object? currentSerializer, Type? objectType, Type serializerType);
    }
}