private byte[] LoadBlobDataGeneral(uint index, _ICliMetadataBlobEntry result)
 {
     if (result.BlobData == null)
     {
         this.reader.BaseStream.Seek(index + result.LengthByteCount, SeekOrigin.Begin);
         byte[] resultBlob = new byte[result.Length];
         reader.Read(resultBlob, 0, result.Length);
         result.BlobData = resultBlob;
         return(resultBlob);
     }
     else
     {
         return(result.BlobData);
     }
 }
        private ICliMetadataCustomAttribute GetCustomAttribute(_ICliManager identityManager, ICliMetadataCustomAttributeTableRow target, _ICliMetadataBlobEntry entry)
        {
            uint offset = target.ValueIndex + entry.LengthByteCount;

            this.reader.BaseStream.Seek(offset, SeekOrigin.Begin);
            return((ICliMetadataCustomAttribute)(entry.Signature = SignatureParser.ParseCustomAttribute(reader, metadataRoot, identityManager, target, (uint)entry.Length)));
        }
        private void LoadSignatureGeneral(SignatureKinds signatureKind, uint heapIndex, _ICliMetadataBlobEntry entry)
        {
            lock (this.syncObject)
            {
                uint offset = heapIndex + entry.LengthByteCount;

                this.reader.BaseStream.Seek(offset, SeekOrigin.Begin);
                switch (signatureKind)
                {
                case SignatureKinds.MethodDefSig:
                    entry.Signature = SignatureParser.ParseMethodDefSig(this.reader, metadataRoot);
                    break;

                case SignatureKinds.MethodRefSig:
                    entry.Signature = SignatureParser.ParseMethodRefSig(this.reader, metadataRoot);
                    break;

                case SignatureKinds.FieldSig:
                    entry.Signature = SignatureParser.ParseFieldSig(this.reader, metadataRoot);
                    break;

                case SignatureKinds.PropertySig:
                    entry.Signature = SignatureParser.ParsePropertySig(this.reader, metadataRoot);
                    break;

                case SignatureKinds.StandaloneSignature:
                    entry.Signature = SignatureParser.ParseStandaloneSig(this.reader, metadataRoot);
                    break;

                case SignatureKinds.CustomModifier:
                    entry.Signature = SignatureParser.ParseCustomModifier(this.reader, metadataRoot);
                    break;

                case SignatureKinds.Param:
                    entry.Signature = SignatureParser.ParseParam(this.reader, metadataRoot);
                    break;

                case SignatureKinds.Type:
                    entry.Signature = SignatureParser.ParseType(this.reader, metadataRoot);
                    break;

                case SignatureKinds.ArrayShape:
                    entry.Signature = SignatureParser.ParseArrayShape(this.reader, metadataRoot);
                    break;

                case SignatureKinds.TypeSpec:
                    entry.Signature = SignatureParser.ParseTypeSpec(this.reader, metadataRoot);
                    break;

                case SignatureKinds.MethodSpec:
                    entry.Signature = SignatureParser.ParseMethodSpec(this.reader, metadataRoot);
                    break;

                case SignatureKinds.MemberRefSig:
                    entry.Signature = SignatureParser.ParseMemberRefSig(this.reader, metadataRoot);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("signatureKind");
                }
            }
        }