/// <summary> /// Constructor /// </summary> /// <param name="metaData">Metadata</param> public MDEmitter(MetaData metaData) { this.metaData = metaData; // We could get these from the metadata tables but it's just easier to get name, // declaring type etc using TypeDef and MethodDef. tokenToTypeDef = new Dictionary <uint, TypeDef>(metaData.TablesHeap.TypeDefTable.Rows); tokenToMethodDef = new Dictionary <uint, MethodDef>(metaData.TablesHeap.MethodTable.Rows); foreach (var type in metaData.Module.GetTypes()) { if (type == null) { continue; } tokenToTypeDef.Add(new MDToken(Table.TypeDef, metaData.GetRid(type)).Raw, type); foreach (var method in type.Methods) { if (method == null) { continue; } tokenToMethodDef.Add(new MDToken(Table.Method, metaData.GetRid(method)).Raw, method); } } }
/// <summary> /// Constructor /// </summary> /// <param name="writer">Symbol writer</param> /// <param name="pdbState">PDB state</param> /// <param name="metaData">Meta data</param> public PdbWriter(ISymbolWriter2 writer, PdbState pdbState, MetaData metaData) { if (writer == null) { throw new ArgumentNullException("writer"); } if (pdbState == null) { throw new ArgumentNullException("pdbState"); } if (metaData == null) { throw new ArgumentNullException("metaData"); } this.writer = writer; this.pdbState = pdbState; this.metaData = metaData; module = metaData.Module; writer.Initialize(metaData); }