Difference between revisions of "Creating Commands"

From ReflexCLI
Jump to: navigation, search
Line 1: Line 1:
 
[[Category:Commands| ]]
 
[[Category:Commands| ]]
 +
Creating Commands:
 +
You can create commands from any c# methods, fields or properties by adding the <code>[ConsoleCommand]</code> attribute.
 +
 +
==Basic Example==
 +
 +
<pre>
 +
using ReflexCLI.Attributes;
 +
 +
namespace CommandTest
 +
{
 +
    class TestCommandLibrary
 +
    {
 +
        [ConsoleCommand]
 +
        private static string Echo(string in)
 +
        {
 +
            return in;
 +
        }
 +
 +
        [ConsoleCommand]
 +
        protected static int IntegerField = 32;
 +
 +
        [ConsoleCommand]
 +
        public static bool BooleanProperty
 +
        {
 +
            get { return IntegerField > 0; }
 +
        }
 +
    }
 +
}
 +
</pre>
 +
 +
This will create the following commands:
 +
 +
#<code>CommandTest.TestCommandLibrary.Echo</code>
 +
#<code>CommandTest.TestCommandLibrary.IntegerField</code>
 +
#<code>CommandTest.TestCommandLibrary.BooleanProperty</code>
 +
 +
==Customising Command Names==
 +
By default, the commands are given fully-qualified names with namespaces etc., which can get pretty verbose. This can be fixed by using a [CommandConsoleClassCustomizer] attribute on the class:
 +
 +
<pre>
 +
namespace CommandTest
 +
{
 +
[ConsoleCommandClassCustomizer("TestCommands")]
 +
class TestCommandLibrary
 +
{
 +
// etc.
 +
</pre>
 +
 +
This will change the prefix of the commands to <code>TestCommand</code>. and so the commands become:
 +
 +
# <code>TestCommands.Echo</code>
 +
# <code>TestCommands.IntegerField</code>
 +
# <code>TestCommands.BooleanProperty</code>
 +
 +
You can also customize the name of the commands by adding the optional parameter to <code>[ConsoleCommand]</code>. For example
 +
 +
<pre>
 +
    [ConsoleCommand("Int")]
 +
    protected static int IntegerField = 32;
 +
</pre>
 +
 +
which will change this command to be <code>TestCommands.Int</code>.

Revision as of 16:09, 30 August 2017

Creating Commands: You can create commands from any c# methods, fields or properties by adding the [ConsoleCommand] attribute.

Basic Example

using ReflexCLI.Attributes;

namespace CommandTest
{
    class TestCommandLibrary
    {
        [ConsoleCommand]
        private static string Echo(string in)
        {
            return in;
        }
		
        [ConsoleCommand]
        protected static int IntegerField = 32;
		
        [ConsoleCommand]
        public static bool BooleanProperty
        {
            get { return IntegerField > 0; }
        }			
    }
}

This will create the following commands:

  1. CommandTest.TestCommandLibrary.Echo
  2. CommandTest.TestCommandLibrary.IntegerField
  3. CommandTest.TestCommandLibrary.BooleanProperty

Customising Command Names

By default, the commands are given fully-qualified names with namespaces etc., which can get pretty verbose. This can be fixed by using a [CommandConsoleClassCustomizer] attribute on the class:

namespace CommandTest
{
	[ConsoleCommandClassCustomizer("TestCommands")]
	class TestCommandLibrary
	{
		// etc.

This will change the prefix of the commands to TestCommand. and so the commands become:

  1. TestCommands.Echo
  2. TestCommands.IntegerField
  3. TestCommands.BooleanProperty

You can also customize the name of the commands by adding the optional parameter to [ConsoleCommand]. For example

    [ConsoleCommand("Int")]
    protected static int IntegerField = 32;

which will change this command to be TestCommands.Int.