Как правило, проблемы, которые решены с анонимными внутренними классами в Java, решены намного более чистым способом с помощью делегатов в .NET. Ваш пример немного слишком упрощен для определения намерения. Если Ваше намерение при помощи абстрактного класса состоит в том, чтобы раздать "поведение", думают о просто использовании Action
делегат вместо этого.
public class StartHere{
public static void main(string[] args){
Action doStuff = () => Console.WriteLine("Did stuff");
executeSomething(doStuff);
}
public static void executeSomething(Action action)
{
action();
}
}
Как насчет:
var dictionary = instructors.Elements("instructor")
.Select((element, index) => new { element, index })
.ToDictionary(x => x.index + 1,
x => x.element.Value);