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
}
}