Difference between revisions of "Creating Commands"

From ReflexCLI
Jump to: navigation, search
 
(3 intermediate revisions by the same user not shown)
Line 13: Line 13:
 
     {
 
     {
 
         [ConsoleCommand]
 
         [ConsoleCommand]
         private static string Echo(string in)
+
         private static string Echo(string inString)
 
         {
 
         {
             return in;
+
             return inString;
 
         }
 
         }
 
 
Line 36: Line 36:
 
#<code>CommandTest.TestCommandLibrary.BooleanProperty</code>
 
#<code>CommandTest.TestCommandLibrary.BooleanProperty</code>
  
==Customising Command Names==
+
==Customising Command Prefixes==
 
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:
 
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:
  
Line 42: Line 42:
 
namespace CommandTest
 
namespace CommandTest
 
{
 
{
[ConsoleCommandClassCustomizer("TestCommands")]
+
[ConsoleCommandClassCustomizer("TestCommand")]
 
class TestCommandLibrary
 
class TestCommandLibrary
 
{
 
{
Line 50: Line 50:
 
This will change the prefix of the commands to <code>TestCommand</code>. and so the commands become:
 
This will change the prefix of the commands to <code>TestCommand</code>. and so the commands become:
  
# <code>TestCommands.Echo</code>
+
# <code>TestCommand.Echo</code>
# <code>TestCommands.IntegerField</code>
+
# <code>TestCommand.IntegerField</code>
# <code>TestCommands.BooleanProperty</code>
+
# <code>TestCommand.BooleanProperty</code>
  
 +
==Customising Command Names==
 
You can also customize the name of the commands by adding the optional parameter to <code>[ConsoleCommand]</code>. For example
 
You can also customize the name of the commands by adding the optional parameter to <code>[ConsoleCommand]</code>. For example
  
Line 61: Line 62:
 
</pre>
 
</pre>
  
which will change this command to be <code>TestCommands.Int</code>.
+
which will change this command to be <code>TestCommand.Int</code>.
 +
 
 +
==Limitations==
 +
There are some limitations on what members can be turned into commands. See [[Command Limitations]] for details.

Latest revision as of 06:06, 3 September 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 inString)
        {
            return inString;
        }
		
        [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 Prefixes

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("TestCommand")]
	class TestCommandLibrary
	{
		// etc.

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

  1. TestCommand.Echo
  2. TestCommand.IntegerField
  3. TestCommand.BooleanProperty

Customising Command Names

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 TestCommand.Int.

Limitations

There are some limitations on what members can be turned into commands. See Command Limitations for details.