namespace LibAC.Arguments { /// /// Defines the base interface for an argument. /// public interface IArgument { /// /// Gets the unique key identifying the argument. /// The setter is private to ensure immutability outside the implementing class. /// string Key { get; set; } /// /// Obtains the value of the argument. /// /// The value of the argument as an object, or null if no value is present. object? GetValue(); /// /// Gets the type of the value this argument holds. /// /// The of the argument value. ArgumentType GetValueType(); /// /// Indicates whether this argument has a value assigned. /// /// true if the argument has a value; otherwise, false. bool HasValue(); /// /// For CLI Help only. Indicates whether the argument is required or not /// bool required { set; } } /// /// Defines the types of arguments supported. /// public enum ArgumentType { String, Integer, Boolean, Float, Double } }