using System.Text; using aeqw89.DataKeys; using Beam.Abstractions; namespace Beam.Models { public abstract class Document(string filename, Encoding? encoding = null) : IDocument { public string Filename { get; set; } = filename; public Encoding Encoding { get; set; } = encoding ?? Encoding.UTF8; public Dictionary, IDocumentMetaData> MetaData { get; set; } = []; IDictionary, IDocumentMetaData> IDocument.MetaData => MetaData.ToDictionary(IDataKey (x) => x.Key, x => x.Value); public abstract byte[] ToBytes(); public abstract override string ToString(); } }