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));
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        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));
        }