コード例 #1
0
 public string GetHashValueString()
 {
     if (!HasHashValue)
     {
         return(string.Empty);
     }
     return(CilDecoder.CreateByteArrayString(HashValue));
 }
コード例 #2
0
 public string GetPublicKeyOrTokenString()
 {
     if (!HasPublicKeyOrToken)
     {
         return(string.Empty);
     }
     return(CilDecoder.CreateByteArrayString(PublicKeyOrToken));
 }
コード例 #3
0
        private CilEntity GetTypeEntity()
        {
            BlobReader        blobReader = _readers.MdReader.GetBlobReader(_typeSpecification.Signature);
            SignatureTypeCode typeCode   = blobReader.ReadSignatureTypeCode();

            while (typeCode == SignatureTypeCode.GenericTypeInstance)
            {
                typeCode = blobReader.ReadSignatureTypeCode();
            }

            if (typeCode == SignatureTypeCode.TypeHandle)
            {
                Handle handle = blobReader.ReadTypeHandle();
                return(CilDecoder.DecodeEntityHandle((EntityHandle)handle, ref _readers));
            }


            return(new CilEntity(null, EntityKind.TypeSpecification));
        }
コード例 #4
0
        public string ToString(CilTypeProvider provider)
        {
            switch (Kind)
            {
            case HandlerKind.Try:
                return(".try");

            case HandlerKind.Finally:
                return("finally");

            case HandlerKind.Filter:
                return("filter");

            case HandlerKind.Fault:
                return("fault");

            case HandlerKind.Catch:
                return(string.Format("catch {0}", CilDecoder.DecodeType(CatchType, provider).ToString(false)));

            default:
                throw new InvalidOperationException("Handler Kind doesn't exist.");
            }
        }
コード例 #5
0
        private void WriteOverridenMethod(CilMethodDefinition methodDefinition)
        {
            WriteIndentation();
            _writer.Write(".override ");
            int token = methodDefinition.MethodDeclarationToken;

            if (CilDecoder.IsMemberReference(token))
            {
                _writer.Write("method ");
                _writer.Write(CilDecoder.SolveMethodName(methodDefinition._readers.MdReader, token, methodDefinition.Provider));
                if (_options.ShowBytes)
                {
                    _writer.Write(string.Format(" /* {0:X8} */", token));
                }
                _writer.WriteLine();
                return;
            }
            _writer.Write(CilDecoder.DecodeOverridenMethodName(methodDefinition._readers.MdReader, token, methodDefinition.Provider));
            if (_options.ShowBytes)
            {
                _writer.Write(string.Format(" /* {0:X8} */", token));
            }
            _writer.WriteLine();
        }
コード例 #6
0
 public string GetFormattedVersion()
 {
     return(CilDecoder.CreateVersionString(Version));
 }
コード例 #7
0
        private void WritePropertyOrEventAccessor(CilMethodDefinition accessor)
        {
            int           i = 0;
            StringBuilder genericParameters = new StringBuilder();

            foreach (var genericParameter in accessor.GenericParameters)
            {
                if (i == 0)
                {
                    genericParameters.Append('<');
                }
                genericParameters.Append(genericParameter);
                genericParameters.Append(',');
                i++;
            }

            if (i > 0)
            {
                genericParameters.Length -= 1; //Delete trailing ,
                genericParameters.Append('>');
            }

            if (accessor.Signature.Header.IsInstance)
            {
                _writer.Write("instance ");
            }
            _writer.Write(string.Format("{0} {1}::{2}{3}{4}", accessor.Signature.ReturnType, accessor.DeclaringType.FullName, accessor.Name, genericParameters.ToString(), CilDecoder.DecodeSignatureParamerTypes(accessor.Signature)));
            _writer.WriteLine();
        }
コード例 #8
0
        public string GetDecodedSignature()
        {
            string        attributes = GetAttributesForSignature();
            StringBuilder signature  = new StringBuilder();

            if (Signature.Header.IsInstance)
            {
                signature.Append("instance ");
            }
            signature.Append(Signature.ReturnType);
            return(string.Format("{0}{1} {2}{3}", attributes, signature.ToString(), Name, CilDecoder.DecodeSignatureParamerTypes(Signature)));
        }
コード例 #9
0
 public string GetValueString()
 {
     return(CilDecoder.CreateByteArrayString(Value));
 }
コード例 #10
0
        private CilEntity GetEntity()
        {
            var handle = _eventDefinition.Type;

            return(CilDecoder.DecodeEntityHandle(handle, ref _readers));
        }