Это сгенерированные компилятором классы, которые обрабатывают замыкания . Они не уникальны для ASP.NET MVC.
Этот класс заставит компилятор сгенерировать один из следующих классов:
public class Foo
{
private bool _bar = true;
public Func<bool> HelloClosure()
{
return () => _bar;
}
}
Когда кто-то за пределами Foo вызывает HelloClosure, он возвращает функцию, которая имеет ссылку на этот конкретный экземпляр Foo. Представьте, что мы не выполняем эту функцию немедленно, и GC приходит и собирает Foo. Что происходит, когда мы выполняем функцию?
var fooInstance = new Foo();
var func = fooInstance.HelloClosure();
fooInstance = null;
GC.Collect();
// assuming fooInstance is collected
var result = func.Invoke();
Эти автоматически сгенерированные классы управляют этими зависимостями между функциями и экземплярами, чтобы мы не попали в такую ситуацию.