using HtmlAgilityPack; using System.Text.Json.Serialization; namespace Beam.Dynamic { [JsonDerivedType(typeof(ParagraphedContentDataProvider), "paragraphed")] [JsonDerivedType(typeof(ListContentDataProvider), "list")] [JsonDerivedType(typeof(ContentsArrayDataProvider), "array")] [JsonDerivedType(typeof(ContentsDataProvider), "single")] [JsonDerivedType(typeof(DropDownDataProvider), "dropdown")] [JsonDerivedType(typeof(AnchorCollectionDataProvider), "anchor-list")] [JsonDerivedType(typeof(AnchorDataProvider), "anchor")] public interface IDataProvider { public string GetString(HtmlDocument document) => (this as IDataProvider)?.Get(document)?.ToString() ?? ""; } public interface IDataProvider : IDataProvider { public T Get(HtmlDocument document); //public HtmlNode? GetNode(HtmlDocument document); } }