Jugando con hacer un compilador para mi propio idioma, estoy tratando de generar algún código MSIL utilizando el marco Reflection.Emit. Funciona bien cuando se usa int
cuando declaro variables locales. Sin embargo, cuando deseo declarar una variable local de un tipo que aún no he compilado, me meto en problemas ya que el DeclareLocal()
toma un Type
como argumento. Esa es mi clase sin compilar, por ejemplo A
, todavía tiene que ser definido usandoILGenerator.DeclareLocal() toma un tipo de una clase aún no compilada
assemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(assemName, AssemblyBuilderAccess.RunAndSave);
module = assemblyBuilder.DefineDynamicModule(Filename);
module.DefineType(name, TypeAttributes.Public | TypeAttributes.Class)
Así que ¿cómo voy a ser capaz de compilar el programa siguiente
class A {
void M() { B b = new B(); }
}
class B
void M() { A a = new A(); }
}
¿Qué ayudaría? –
@phoog: bien podría esperar a que alguien haga su trabajo, entonces ... –
No estoy haciendo C# aquí ... era solo un ejemplo de dependencia circular –