Я хотел бы абстрагировать некоторую программную логику базовому классу для выполнения командной строки (функциональность похожа на то, что this question was requesting).Использование метода static void Main() из базового класса в качестве точки входа программы
другими словами, что-то вроде этого:
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
То, что я хотел бы знать: есть ли какие-либо документированные причины такого результата?
Я бы предположил, потому что он не может создать экземпляр неявного объекта запуска. Вы пытались * явно * установить объект запуска? – BradleyDotNET
Используйте Program.Main() для точки входа и создайте свое собственное дерево классов. – abatishchev
Да, @abatishchev, это то, что я делаю, чтобы достичь той функциональности, которой я был, но я хотел знать, была ли причина, по которой он просто не использовал метод Main в базовом классе. – skeryl