Czy jest możliwe zapisanie dynamicznego złożenia na dysku?

Niedawno kupiłem książkę AyendeBudowanie DSL w Boo (kup, przeczytaj, to niesamowite), ale zbliżam się do problemu z implementacją i chcę zobaczyć, jak wygląda wygenerowany kod. Normalnie używałbym reflektora, aby spojrzeć na kod, ale w tym przypadku zespoły są dynamiczne i tylko w pamięci. Czy istnieje sposób zapisywania dynamicznych zespołów na dysku, aby móc je odzwierciedlić?

EDYCJA / Moja odpowiedź:

Wow, trochę czasu zajęło mi powrót do tego. Niestety, zostawiłem ważne pytanie z pierwotnego pytania.

Ważny bit: używamBiblioteka RhinoDSL Ayende jak zaleca w książce. Mam dostęp do kompilatora boo w mojej podklasie DslEngine, który wygląda tak:

public class JobEngine : DslEngine
{
    protected override void CustomizeCompiler(Boo.Lang.Compiler.BooCompiler compiler, Boo.Lang.Compiler.CompilerPipeline pipeline, string[] urls)
    {
        pipeline.Insert(1, new ImplicitBaseClassCompilerStep(typeof (JobBase), "Prepare", "JobLanguage", "log4net", "Quartz"));
    }
}

Aby zmienić najmniej i dostać to, co chciałem, musiałem dodać jedną linię ...

public class JobEngine : DslEngine
{
    protected override void CustomizeCompiler(Boo.Lang.Compiler.BooCompiler compiler, Boo.Lang.Compiler.CompilerPipeline pipeline, string[] urls)
    {
        compiler.Parameters.GenerateInMemory = false; // <--- This one.
        pipeline.Insert(1, new ImplicitBaseClassCompilerStep(typeof (JobBase), "Prepare", "JobLanguage", "log4net", "Quartz"));
    }
}

Spowodowało to, że kompilator wyprowadził zespół do mojego katalogu ~ LocalSettings Temp, a następnie mogłem to odzwierciedlić. Ważne jest, aby pamiętać, że dokonanie tej zmiany spowodowało przerwanie reszty programu (RhinoDSL nie mógł już znaleźć zespołów w pamięci, ponieważ wysyłam je na dysk), więc jest to użyteczne tylko jako narzędzie debugowania.

questionAnswers(4)

yourAnswerToTheQuestion