SharpLibEar/Action.cs
author StephaneLenclud
Sat, 13 Aug 2016 23:26:54 +0200
changeset 232 5a739e2e5255
parent 229 7c631055b94b
child 238 c92587ddabcd
permissions -rw-r--r--
Published v0.11.0.0.
     1 //
     2 
     3 
     4 using System;
     5 using System.Collections.Generic;
     6 using System.Runtime.Serialization;
     7 using System.Threading;
     8 
     9 namespace SharpLib.Ear
    10 {
    11     [DataContract]
    12     [KnownType("DerivedTypes")]
    13     public abstract class Action: IComparable
    14     {
    15         protected abstract void DoExecute();
    16 
    17         /// <summary>
    18         /// Allows testing from generic edit dialog.
    19         /// </summary>
    20         public void Test()
    21         {
    22             Console.WriteLine("Action test");
    23             Execute();
    24         }
    25 
    26         public void Execute()
    27         {
    28             Console.WriteLine("Action executing: " + Brief());
    29             DoExecute();
    30         }
    31 
    32         public string Name {
    33             //Get the name of this object action attribute
    34             get { return Utils.Reflection.GetAttribute<AttributeObject>(GetType()).Name; }
    35             private set { }
    36         }
    37 
    38         public virtual string Brief()
    39         {
    40             return Name;
    41         }
    42 
    43         public int CompareTo(object obj)
    44         {
    45             //Sort by action name
    46             return Utils.Reflection.GetAttribute<AttributeObject>(GetType()).Name.CompareTo(obj.GetType());            
    47         }
    48 
    49         private static IEnumerable<Type> DerivedTypes()
    50         {
    51             return SharpLib.Utils.Reflection.GetDerivedTypes<Action>();
    52         }
    53 
    54     }
    55 
    56 
    57 }