Giocando con un compilatore per la mia lingua, sto provando a generare del codice MSIL usando il framework Reflection.Emit. Funziona correttamente quando si utilizza int
quando si dichiarano variabili locali. Tuttavia, quando voglio dichiarare una variabile locale di un tipo che non ho ancora compilato, mi trovo nei guai dato che lo DeclareLocal()
prende un argomento come Type
. Questa è la mia classe non compilato, dire A
, deve ancora essere definita utilizzandoILGenerator.DeclareLocal() accetta un tipo di classe non ancora compilata
assemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(assemName, AssemblyBuilderAccess.RunAndSave);
module = assemblyBuilder.DefineDynamicModule(Filename);
module.DefineType(name, TypeAttributes.Public | TypeAttributes.Class)
Così come farò mai in grado di compilare il seguente programma
class A {
void M() { B b = new B(); }
}
class B
void M() { A a = new A(); }
}
Cosa sarebbe di aiuto? –
@phoog: potrebbe anche aspettare che qualcuno faccia il suo lavoro, quindi .. –
In realtà non sto facendo C# qui ... era solo un esempio di dipendenza circolare –