using System.ComponentModel.DataAnnotations; namespace StellaOps.Plugin.Sdk; /// /// Options base class with validation support. /// public abstract class PluginOptionsBase : IValidatableObject { /// /// Override to add custom validation logic. /// /// Validation context. /// Validation results. public virtual IEnumerable Validate(ValidationContext validationContext) { yield break; } /// /// Validates the options and throws if invalid. /// /// If validation fails. public void ValidateAndThrow() { var context = new ValidationContext(this); var results = new List(); if (!Validator.TryValidateObject(this, context, results, validateAllProperties: true)) { var errors = string.Join(", ", results.Select(r => r.ErrorMessage)); throw new ValidationException($"Configuration validation failed: {errors}"); } } }