Как определить, что происходит за кулисами в .Net - PullRequest
2 голосов
/ 30 октября 2009

Какой инструмент или метод я могу использовать, чтобы увидеть, к какому коду компилируется что-то вроде анонимного метода или оператора LINQ? В основном видя, что происходит за сценой?

Ответы [ 3 ]

5 голосов
/ 30 октября 2009

Отражатель - отличный способ сделать это.

Перейдите в «Просмотр» / «Параметры» / «Оптимизация» и выберите «Нет», чтобы он не пытался понять, каким был C # изначально.

Например, метод Main этого небольшого приложения:

using System;

class Test    
{
    static void Main()
    {
        string other = "hello";
        Foo (x => new { Before = other + x, After = x + other });
    }

    static void Foo<T>(Func<int, T> func) {}
}

декомпилируется в:

private static void Main()
{
    <>c__DisplayClass1 class2;
    class2 = new <>c__DisplayClass1();
    class2.other = "hello";
    Foo(new Func<int, <>f__AnonymousType0<string, string>>(class2.<Main>b__0));
    return;
}

и затем вы смотрите в <>c__DisplayClass1 и <>f_AnonymousType0 для более подробной информации и т. Д.

2 голосов
/ 30 октября 2009

Вы можете использовать ildasm для просмотра вывода MSIL компилятора.

1 голос
/ 30 октября 2009

Есть еще один способ, если вы хотите проникнуть внутрь и что происходит в среде .Net, когда мы вызываем методы CLR.

Если вы используете VS 2008, вы даже можете отлаживать исходный код .net framework. Для этого вам необходимо установить Исправления для исходного эталонного сервера Microsoft ..

И Шон Берк получил отличный пост (пошаговое руководство) для настройки этой вещи ..

Просто попробуй ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...