我有两个控制台应用程序,查询和更新,它们共享一些功能。我想让这两个类继承自一个公共基类,但问题是,对于控制台应用程序,我必须有一个static Main
函数。我目前拥有的是以下内容:
namespace Utils
{
public class ConsoleBase
{
protected const int ERROR_EXIT_CODE = 1;
protected static void printWarning(string msg) {...}
public ConsoleBase(IEnumerable<string> args) { ... }
...
namespace Update
{
class Update : ConsoleBase
{
private static ConsoleBase _consoleBase;
public static void Main(string[] args) { ... }
...
namespace Query
{
class Query : ConsoleBase
{
private static ConsoleBase _consoleBase;
public static void Main(string[] args) { ... }
...
ConsoleBase
对我来说,在每个派生类中继承以及将其实例作为static
变量似乎是一个设计问题。我这样做的原因是:
- 我可以
protected static
定义派生类中的ConsoleBase
其他方法可以访问的方法。static
- 我可以将命令行参数传递给 for 的构造函数,做一些
ConsoleBase
常见的事情,然后通过.public
ConsoleBase
所以在派生类中,我混合了对实例的方法/属性的调用ConsoleBase
,例如
_consoleBase.UseDebugMode()
以及调用继承的静态方法和访问定义的继承常量ConsoleBase
,例如
printWarning(CONST_MSG_IN_BASE_CLASS);
我可以以某种方式清理它吗?从一个类继承以及保留该基类的一个实例以供使用是不是很糟糕?