【发布时间】:2017-07-05 21:36:42
【问题描述】:
我想将一些程序逻辑抽象为一个基类,用于执行命令行程序(功能类似于this question was requesting)。
换句话说,是这样的:
public abstract class BaseProgram<T>
{
public static void Main(string[] args)
{
Console.WriteLine(typeof(T));
}
}
public class Program : BaseProgram<string>
{
}
请务必注意,BaseProgram 位于不同的程序集中。
但是,这不起作用。 static void Main(string[] args) 方法必须在派生类中。谁能解释这是为什么?毕竟,以下是完全“合法的”:
Program.Main(null);
BaseProgram<string>.Main(null);
会输出:
> System.String
> System.String
我想知道的:是否有任何记录在案的原因导致此结果?
【问题讨论】:
-
我想是因为它无法实例化隐式启动对象。您是否尝试明确设置启动对象?
-
使用 Program.Main() 作为入口点并在那里实例化您自己的类树。
-
是的,@abatishchev,这就是我为实现我所追求的功能所做的工作,但我想知道它是否有理由不使用
Main方法在基类中。 -
@BradleyDotNET 不,我没有。但是,它不允许我将基类设置为启动对象。只有“程序”类可用。也许是因为它在不同的项目中?
-
明确设置为
Program可能工作。
标签: c# console-application entry-point