Я пытаюсь написать динамический метод, который вызывает Parallel.ForEach. Я проверил IL образца класса и заметил, что существует сгенерированный вложенный тип с именем <> c__DisplayClass #
Мне удалось создать динамическую реализацию Parallel.ForEach, но мой вложенный класс имеет нормальный тип. Он не называется <> c __....
И я думаю, что из-за этого мой сгенерированный код выглядит несколько иначе при проверке его в Reflector:
private void SayHello(string name)
{
SayHelloInvoker invoker = new SayHelloInvoker(name);
Parallel.ForEach<ITest>(this, new Action<ITest>(invoker.SayHello));
}
Но проверенный в Reflector код компиляции выглядит следующим образом:
private void SayHello(string name)
{
Parallel.ForEach<ITest>(this, delegate (ITest x) { x.SayHello(name)); });
}
Текущая реализация работает просто отлично, но я все же хотел бы выяснить, в чем заключается ловушка при генерации вложенных типов, типа <> c __....
Поэтому, пожалуйста, если кто-то может указать мне правильный путь, чтобы я мог удовлетворить свое любопытство. :)