我有一个类似的控制台应用程序:
public enum TypeMessage : int
{
Log,
Success,
Warning,
Alert
}
class Program
{
static void Main(string[] args)
{
//do stuff
WriteMessage("Sucess .... etc", TypeMessage.Success);
}
static void WriteMessage(string message, TypeMessage typeMessage = TypeMessage.Log)
{
switch (typeMessage)
{
case TypeMessage.Success:
Console.ForegroundColor = ConsoleColor.Green;
break;
case TypeMessage.Warning:
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case TypeMessage.Alert:
Console.ForegroundColor = ConsoleColor.Red;
break;
default:
Console.ResetColor();
break;
}
Console.WriteLine(message);
Console.ResetColor();
}
static void ExecuteAction(Action action)
{
try
{
action.Invoke();
}
catch (Exception ex)
{
throw;
}
}
/*....*/
}
我想创建一个BaseProgram类,class Program : BaseProgram
并在其中放置初始化设置,helpers方法等:
我尝试在BaseProgram类中使用静态构造函数并设置控制台标题,但是没有用。
static BaseProgram()
{
Console.Title = "Some Title";
}
如何实现呢?
除非您BaseProgram
在应用程序入口点(Program.Main()
)调用/实例化其或其派生类,否则当前使用静态构造函数的实现将无法正常工作。
class Program : BaseProgram
{
static void Main(string[] args)
{
new BaseProgram(); // or, new Program();
//do stuff
WriteMessage("Sucess .... etc", TypeMessage.Success);
}
}
话虽如此,BaseProgram
您可以考虑像这样实现它,而不是使用静态构造函数:
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);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句