public ImportedAssemblyDefinition GetAssemblyDefinition (Assembly assembly) { ImportedAssemblyDefinition def; if (!assembly_2_definition.TryGetValue (assembly, out def)) { // This can happen in dynamic context only def = new ImportedAssemblyDefinition (assembly, this); assembly_2_definition.Add (assembly, def); def.ReadAttributes (); } return def; }
public IAssemblyDefinition GetAssemblyDefinition (Assembly assembly) { IAssemblyDefinition found; if (!assembly_2_definition.TryGetValue (assembly, out found)) { // This can happen in dynamic context only var def = new ImportedAssemblyDefinition (assembly); assembly_2_definition.Add (assembly, def); def.ReadAttributes (); found = def; } return found; }
public void ImportAssembly (Assembly assembly, RootNamespace targetNamespace) { // It can be used more than once when importing same assembly // into 2 or more global aliases ImportedAssemblyDefinition definition; if (!assembly_2_definition.TryGetValue (assembly, out definition)) { definition = new ImportedAssemblyDefinition (assembly); assembly_2_definition.Add (assembly, definition); definition.ReadAttributes (); } // // This part tries to simulate loading of top-level // types only, any missing dependencies are ignores here. // Full error report is reported later when the type is // actually used // Type[] all_types; try { all_types = assembly.GetTypes (); } catch (ReflectionTypeLoadException e) { all_types = e.Types; } ImportTypes (all_types, targetNamespace, definition.HasExtensionMethod); }