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"); } } }