Mark van Renswoude
e157598fa7
Refactored console interaction to support this feature Updated documentation with recently added verbs
32 lines
813 B
C#
32 lines
813 B
C#
using System;
|
|
using Tapeti.Cmd.ConsoleHelper;
|
|
|
|
namespace Tapeti.Cmd.Verbs
|
|
{
|
|
/// <remarks>
|
|
/// Implementations are expected to have a constructor which accepts the options class
|
|
/// associated with the ExecutableVerb attribute.
|
|
/// </remarks>
|
|
public interface IVerbExecuter
|
|
{
|
|
void Execute(IConsole console);
|
|
}
|
|
|
|
|
|
|
|
[AttributeUsage(AttributeTargets.Class)]
|
|
public class ExecutableVerbAttribute : Attribute
|
|
{
|
|
public Type VerbExecuter { get; }
|
|
|
|
|
|
public ExecutableVerbAttribute(Type verbExecuter)
|
|
{
|
|
if (!typeof(IVerbExecuter).IsAssignableFrom(verbExecuter))
|
|
throw new InvalidCastException("Type must support IVerbExecuter");
|
|
|
|
VerbExecuter = verbExecuter;
|
|
}
|
|
}
|
|
}
|