Просматривая исходный код Roslyn на GitHub, я наткнулся на CSharpSyntaxTree , который является открытым абстрактным классом со статическими методами.Я не видел этого раньше и хотел бы знать, является ли это новой тенденцией.
Моя первая реакция при чтении кода для указанного класса была: «О, хорошо, это определение интерфейса».Но затем, видя следующий статический метод, сбивает с толку:
/// <summary>
/// Produces a syntax tree by parsing the source text.
/// </summary>
public static SyntaxTree ParseText(
SourceText text,
CSharpParseOptions options = null,
string path = "",
CancellationToken cancellationToken = default(CancellationToken))
{
if (text == null)
...
}
Кроме того, этот SO вопрос и ответ на него указывают, что статический метод в абстрактномкласс не хорошая практика.Если так, то почему относительно современный исходный код от Microsoft увековечил такую практику?
Мой опыт работы в C ++, и я чувствую, что C ++ излишне сложен.Я не хочу, чтобы то же самое произошло с C #.