private void LoadNestedClassMetadata()
        {
            if (!_stream.Tables.ContainsKey(MetadataTables.NestedClass))
            {
                return;
            }

            MetadataRow[] nestedClasses = _stream.Tables[MetadataTables.NestedClass];
            for (int i = 0; i < nestedClasses.Length; i++)
            {
                NestedClassMetadataTableRow nestedClassRow = nestedClasses[i] as NestedClassMetadataTableRow;
                TypeDefMetadataTableRow     nestedClass    = _stream.Tables.GetEntryFor(
                    MetadataTables.TypeDef, nestedClassRow.NestedClass
                    ) as TypeDefMetadataTableRow;

                TypeDef container = _map.GetDefinition(MetadataTables.TypeDef, _stream.Tables.GetEntryFor(
                                                           MetadataTables.TypeDef, nestedClassRow.EnclosingClass
                                                           )) as TypeDef;
                TypeDef nested = _map.GetDefinition(MetadataTables.TypeDef, nestedClass) as TypeDef;

                _assembly.Map.Remove(nested); // remove type originally added when loading typedef records

                nested.ContainingClass = container;
                _assembly.Map.Add(nested);
            }
        }
        public void NestedClass_WhenCreated_OffsetIsMovedOn()
        {
            byte[]        contents     = new byte[4];
            Offset        offset       = 0;
            IIndexDetails indexDetails = IndexHelper.CreateIndexDetails(2);

            NestedClassMetadataTableRow row = new NestedClassMetadataTableRow(contents, offset, indexDetails);

            Assert.AreEqual(4, offset.Current);
        }
        public void NestedClass_WhenCreated_FieldsAreReadCorrectly()
        {
            byte[] contents = new byte[] {
                0x01, 0x00,
                0x02, 0x00
            };
            Offset        offset       = 0;
            IIndexDetails indexDetails = IndexHelper.CreateIndexDetails(2);

            NestedClassMetadataTableRow row = new NestedClassMetadataTableRow(contents, offset, indexDetails);

            Assert.AreEqual(1, row.NestedClass.Value);
            Assert.AreEqual(2, row.EnclosingClass.Value);
        }
 public NestedClassEntry(MetadataDirectory directory, NestedClassMetadataTableRow row)
 {
     this.FileOffset     = string.Format("0x{0:x}", row.FileOffset);
     this.EnclosingClass = row.EnclosingClass.ToString();
     this.NestedClass    = row.NestedClass.ToString();
 }