using System.Diagnostics.CodeAnalysis;
using System.Reflection;

namespace AyCode.Core.Serializers;

/// <summary>
/// Base class for serializer type metadata.
/// Extends TypeMetadataBase for serializer-specific functionality.
/// Used by Binary, JSON, and Toon serializers.
/// </summary>
public abstract class SerializeTypeMetadataBase : TypeMetadataBase
{
    protected SerializeTypeMetadataBase(
        [DynamicallyAccessedMembers(RequiredMembers)] Type type,
        Func<PropertyInfo, bool> ignorePropertyFilter)
        : base(type, ignorePropertyFilter)
    {
        // Base class handles:
        // - ReadableProperties, WritableProperties
        // - IId detection (IsIId, IdType, IdAccessorType, GetIdInt32/64/Guid)
        // - CompiledConstructor
        // - HasComplexProperties, NeedsReferenceTracking flags (set by derived classes)
    }
}
