Exemple #1
0
        static FieldInfo GetBackingField(MethodInfo method, ILPattern pattern)
        {
            var result = ILPattern.Match(method, pattern);

            if (!result.success)
            {
                throw new ArgumentException();
            }

            object value;

            if (!result.TryGetData(FieldPattern.FieldKey, out value))
            {
                throw new InvalidOperationException();
            }

            return((FieldInfo)value);
        }
Exemple #2
0
        public static MatchContext Match(MethodBase method, ILPattern pattern)
        {
            if (method == null)
            {
                throw new ArgumentNullException("method");
            }
            if (pattern == null)
            {
                throw new ArgumentNullException("pattern");
            }

            var instructions = method.GetInstructions();

            if (instructions.Count == 0)
            {
                throw new ArgumentException();
            }

            var context = new MatchContext(instructions [0]);

            pattern.Match(context);
            return(context);
        }
Exemple #3
0
 static ILPattern Field(OpCode opcode)
 {
     return(new FieldPattern(ILPattern.OpCode(opcode)));
 }
Exemple #4
0
 public FieldPattern(ILPattern pattern)
 {
     this.pattern = pattern;
 }
Exemple #5
0
 public OptionalPattern(ILPattern optional)
 {
     this.pattern = optional;
 }
Exemple #6
0
 public static ILPattern Optional(ILPattern pattern)
 {
     return(new OptionalPattern(pattern));
 }
Exemple #7
0
 public EitherPattern(ILPattern a, ILPattern b)
 {
     this.a = a;
     this.b = b;
 }
Exemple #8
0
 public static ILPattern Either(ILPattern a, ILPattern b)
 {
     return new EitherPattern (a, b);
 }
Exemple #9
0
 public static ILPattern Either(ILPattern a, ILPattern b)
 {
     return(new EitherPattern(a, b));
 }
Exemple #10
0
 public OptionalPattern(ILPattern optional)
 {
     this.pattern = optional;
 }
Exemple #11
0
 public SequencePattern(ILPattern [] patterns)
 {
     this.patterns = patterns;
 }
Exemple #12
0
 public EitherPattern(ILPattern a, ILPattern b)
 {
     this.a = a;
     this.b = b;
 }
Exemple #13
0
 public static ILPattern Optional(ILPattern pattern)
 {
     return new OptionalPattern (pattern);
 }
Exemple #14
0
        public static MatchContext Match(MethodBase method, ILPattern pattern)
        {
            if (method == null)
                throw new ArgumentNullException ("method");
            if (pattern == null)
                throw new ArgumentNullException ("pattern");

            var instructions = method.GetInstructions ();
            if (instructions.Count == 0)
                throw new ArgumentException ();

            var context = new MatchContext (instructions [0]);
            pattern.Match (context);
            return context;
        }
        static FieldInfo GetBackingField(MethodInfo method, ILPattern pattern)
        {
            var result = ILPattern.Match (method, pattern);
            if (!result.success)
                throw new ArgumentException ();

            object value;
            if (!result.TryGetData (FieldPattern.FieldKey, out value))
                throw new InvalidOperationException ();

            return (FieldInfo) value;
        }
 public FieldPattern(ILPattern pattern)
 {
     this.pattern = pattern;
 }