internal static CilType DecodeType(EntityHandle handle, CilTypeProvider provider, bool?isValueType) { SignatureTypeHandleCode code; if (isValueType.HasValue) { code = isValueType.Value ? SignatureTypeHandleCode.ValueType : SignatureTypeHandleCode.Class; } else { code = SignatureTypeHandleCode.Unresolved; } switch (handle.Kind) { case HandleKind.TypeDefinition: return(provider.GetTypeFromDefinition(provider.Reader, (TypeDefinitionHandle)handle, code)); case HandleKind.TypeReference: return(provider.GetTypeFromReference(provider.Reader, (TypeReferenceHandle)handle, code)); case HandleKind.TypeSpecification: return(provider.GetTypeFromSpecification(provider.Reader, (TypeSpecificationHandle)handle, code)); default: throw new ArgumentException("Handle is not a type definition, reference, or specification.", nameof(handle)); } }
internal static CilType DecodeType(EntityHandle handle, CilTypeProvider provider, byte rawTypeKind) { switch (handle.Kind) { case HandleKind.TypeDefinition: return(provider.GetTypeFromDefinition(provider.Reader, (TypeDefinitionHandle)handle, rawTypeKind)); case HandleKind.TypeReference: return(provider.GetTypeFromReference(provider.Reader, (TypeReferenceHandle)handle, rawTypeKind)); case HandleKind.TypeSpecification: return(provider.GetTypeFromSpecification(provider.Reader, null, (TypeSpecificationHandle)handle, rawTypeKind)); default: throw new ArgumentException("Handle is not a type definition, reference, or specification.", nameof(handle)); } }
internal static CilType DecodeType(EntityHandle handle, CilTypeProvider provider, bool? isValueType) { SignatureTypeHandleCode code; if (isValueType.HasValue) { code = isValueType.Value ? SignatureTypeHandleCode.ValueType : SignatureTypeHandleCode.Class; } else { code = SignatureTypeHandleCode.Unresolved; } switch (handle.Kind) { case HandleKind.TypeDefinition: return provider.GetTypeFromDefinition(provider.Reader, (TypeDefinitionHandle)handle, code); case HandleKind.TypeReference: return provider.GetTypeFromReference(provider.Reader, (TypeReferenceHandle)handle, code); case HandleKind.TypeSpecification: return provider.GetTypeFromSpecification(provider.Reader, (TypeSpecificationHandle)handle, code); default: throw new ArgumentException("Handle is not a type definition, reference, or specification.", nameof(handle)); } }