我有兩個控制檯應用程序,查詢和更新,共享一些功能。我想讓這兩個類繼承自一個公共基類,但問題是,對於控制檯應用程序,我必須具有static Main
函數。我目前有如下:C#控制檯應用程序之間的共享功能
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
變量繼承。我這樣做的原因是,:
- 我可以在
ConsoleBase
定義protected static
方法,這些方法在派生類其他static
方法訪問。 - 我可以沿着命令行參數傳遞給構造函數爲
ConsoleBase
,做普通的東西,然後通過public
屬性和方法在派生類再次訪問的ConsoleBase
實例的參數。
所以在派生類中,我調用ConsoleBase
實例上的方法/屬性的混合,例如,
_consoleBase.UseDebugMode()
以及調用繼承的靜態方法和訪問在ConsoleBase
中定義的繼承的常數,例如
printWarning(CONST_MSG_IN_BASE_CLASS);
我能以某種方式清理它嗎?從一個類繼承並保持該基類的一個實例來處理它是不是很糟糕?
我喜歡將'ConsoleBase'中的靜態方法與實例方法分開的想法。現在,如果我能想到這兩個類的好名字...... – 2009-10-21 20:01:41