Your current implementation with static constructor won't work, unless you call/ instantiate the BaseProgram
or its derivatives in your application entry point (Program.Main()
).
class Program : BaseProgram
{
static void Main(string[] args)
{
new BaseProgram(); // or, new Program();
//do stuff
WriteMessage("Sucess .... etc", TypeMessage.Success);
}
}
Having said that, instead of using a static constructor on BaseProgram
perhaps you could consider implementing it like this:
public abstract class BaseProgram
{
protected BaseProgram()
{
Console.Title = "Some Title";
// other common initialization
}
public abstract void Run(string[] args);
public void WriteMessage(string message, TypeMessage typeMessage = TypeMessage.Log)
{
...
}
// other methods
}
public class Program : BaseProgram
{
public static void Main(string[] args)
{
var program = new Program();
program.Run(args);
}
public override void Run(string[] args)
{
//do stuff
WriteMessage("Sucess .... etc", TypeMessage.Success);
}
}