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}");
}
}
}