Использование статического метода 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

Что бы я хотел знать: есть ли документированные причины для такого результата?

Ответы на вопрос(2)

Ваш ответ на вопрос