示例#1
0
        public AnalysisNet.Types.IMetadataReference ExtractToken(Cecil.MemberReference token)
        {
            AnalysisNet.Types.IMetadataReference result = AnalysisNet.Types.PlatformType.Unknown;

            if (token is Cecil.MethodReference methodRef)
            {
                result = ExtractMethod(methodRef);
            }
            else if (token is Cecil.TypeReference typeRef)
            {
                result = ExtractType(typeRef);
            }
            else if (token is Cecil.FieldReference fieldRef)
            {
                // not sure about it
                bool isStatic = fieldRef.IsDefinition ? fieldRef.Resolve().IsStatic : true;
                result = ExtractField(fieldRef, isStatic);
            }
            else
            {
                throw new NotImplementedException();
            }

            return(result);
        }
示例#2
0
        private AnalysisNet.IInstruction ProcessLoadToken(Cecil.Cil.Instruction op)
        {
            Cecil.MemberReference cciToken = op.Operand as Cecil.MemberReference;
            AnalysisNet.Types.IMetadataReference ourToken = typeExtractor.ExtractToken(cciToken);

            AnalysisNetBytecode.LoadTokenInstruction instruction = new AnalysisNetBytecode.LoadTokenInstruction((uint)op.Offset, ourToken);
            return(instruction);
        }