public override IEnumerable GetValues() { yield return(Value("SignatureBlobIdx", row.SignatureBlobIdx)); TypeSpecSignature signature = new TypeSpecSignature(Metadata, row.SignatureBlobIdx); yield return(Value("Signature Token", signature.Token)); yield return(Value("Signature Type", signature.Type.ToString())); }
/// <summary> /// Loads the type specs. /// </summary> private void LoadTypeSpecs() { Token maxToken = GetMaxTokenValue(TableType.TypeSpec); foreach (Token token in new Token(TableType.TypeSpec, 1).Upto(maxToken)) { TypeSpecRow row = metadataProvider.ReadTypeSpecRow(token); TypeSpecSignature signature = GetTypeSpecSignature(row.SignatureBlobIdx); GenericInstSigType genericSigType = signature.Type as GenericInstSigType; if (genericSigType != null) { RuntimeType genericType = null; SigType sigType = genericSigType; switch (genericSigType.Type) { case CilElementType.ValueType: goto case CilElementType.Class; case CilElementType.Class: TypeSigType typeSigType = (TypeSigType)sigType; genericType = types[typeSigType.Token.RID]; // NOTE: Should this be -1 break; case CilElementType.GenericInst: GenericInstSigType genericSigType2 = (GenericInstSigType)sigType; RuntimeType genericBaseType = null; if (genericSigType2.BaseType.Token.Table == TableType.TypeDef) { genericBaseType = types[genericSigType2.BaseType.Token.RID - 1]; } else if (genericSigType2.BaseType.Token.Table == TableType.TypeRef) { genericBaseType = typeRef[genericSigType2.BaseType.Token.RID - 1]; } genericType = new CilGenericType(this, genericBaseType, genericSigType, token, this); break; default: throw new NotSupportedException(String.Format(@"LoadTypeSpecs does not support CilElementType.{0}", genericSigType.Type)); } typeSpecs[token.RID - 1] = genericType; } else { if (signature.Type is MVarSigType) { continue; } else if (signature.Type is SZArraySigType) { continue; } else { continue; } } } }