TType DecodeSignature <TType>(ISignatureTypeProvider <TType> provider, SignatureDecoderOptions options = SignatureDecoderOptions.None) { var decoder = new SignatureDecoder <TType>(provider, _reader, options); var blobReader = _reader.GetBlobReader(Signature); return(decoder.DecodeType(ref blobReader)); }
/// <summary> /// Creates a new SignatureDecoder. /// </summary> /// <param name="provider">The provider used to obtain type symbols as the signature is decoded.</param> /// <param name="metadataReader"> /// The metadata reader from which the signature was obtained. It may be null if the given provider allows it. /// However, if <see cref="SignatureDecoderOptions.DifferentiateClassAndValueTypes"/> is specified, it should /// be non-null to evaluate WinRT projections from class to value type or vice-versa correctly. /// </param> /// <param name="options">Set of optional decoder features to enable.</param> public SignatureDecoder( ISignatureTypeProvider <TType> provider, MetadataReader metadataReader = null, SignatureDecoderOptions options = SignatureDecoderOptions.None) { if (provider == null) { throw new ArgumentNullException(nameof(provider)); } _metadataReaderOpt = metadataReader; _provider = provider; _options = options; }
public ImmutableArray <TType> DecodeSignature <TType>(ISignatureTypeProvider <TType> provider, SignatureDecoderOptions options = SignatureDecoderOptions.None) { var decoder = new SignatureDecoder <TType>(provider, _reader, options); var blobReader = _reader.GetBlobReader(Signature); return(decoder.DecodeMethodSpecificationSignature(ref blobReader)); }