protected void given_package_assembly(string exportName, Expression <Action <FluentAssemblyBuilder> > assembly) { var assemblyName = assembly.Parameters[0].Name; var builtTypes = new Expression <Action <FluentTypeBuilder> > [0]; FluentAssemblyBuilder builder = types => builtTypes = types; assembly.Compile()(builder); _exports .GetOrCreate(exportName) [assemblyName] = builtTypes; }
/// <summary> /// Gets or creates an <see cref="AssemblyBuilder"/> and <see cref="ModuleBuilder"/> pair. /// </summary> /// <param name="assemblyName">The name of the assembly builder.</param> /// <returns>An assembly builder instance.</returns> public IAssemblyBuilder GetOrCreateAssemblyBuilder(string assemblyName) { FluentAssemblyBuilder impl; if (this.cache.TryGetValue(assemblyName, out impl) == false) { AssemblyName name = new AssemblyName(assemblyName); var builder = AssemblyBuilder.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndCollect); impl = new FluentAssemblyBuilder(builder); this.cache.Add(assemblyName, impl); } return(impl); }