コード例 #1
0
ファイル: IfEmitter.cs プロジェクト: eknowledger/FluentIL
 public IfEmitter(DynamicMethodBody generator)
 {
     _generator = generator;
     _ifFalse = $"IfFalse_{Guid.NewGuid()}";
     _done = $"Done_{Guid.NewGuid()}";
     LeftSideVarName = $"LS_{Guid.NewGuid()}";
 }
コード例 #2
0
ファイル: IfEmitter.cs プロジェクト: wangchengqun/FluentIL
 public IfEmitter(DynamicMethodBody generator)
 {
     _generator      = generator;
     _ifFalse        = $"IfFalse_{Guid.NewGuid()}";
     _done           = $"Done_{Guid.NewGuid()}";
     LeftSideVarName = $"LS_{Guid.NewGuid()}";
 }
コード例 #3
0
        public override void BuildIL(DynamicMethodBody dynamicMethodBody)
        {
            for (int i = 0; i < NestedSourceProperties.Count - 1; i++)
            {
                dynamicMethodBody
                    .Ldarg("source");

                for (int x = 0; x <= i; x++)
                {
                    dynamicMethodBody
                        .Call(this.NestedSourceProperties[x].GetGetMethod());
                }

                dynamicMethodBody
                    .IfNotNull();
            }

            dynamicMethodBody
                        .Ldarg("target")
                        .Ldarg("source");

            foreach (PropertyInfo propertyInfo in NestedSourceProperties)
            {
                dynamicMethodBody.Call(propertyInfo.GetGetMethod());
            }

            dynamicMethodBody
                .Call(this.TargetProperty.GetSetMethod());

            for (int i = 0; i < NestedSourceProperties.Count - 1; i++)
            {
                dynamicMethodBody
                    .EndIf();
            }
        }
コード例 #4
0
ファイル: IfEmitter.cs プロジェクト: vendettamit/FluentIL
 public IfEmitter(DynamicMethodBody generator)
 {
     generatorField  = generator;
     ifFalseField    = string.Format("IfFalse_{0}", Guid.NewGuid());
     doneField       = string.Format("Done_{0}", Guid.NewGuid());
     LeftSideVarName = string.Format("LS_{0}", Guid.NewGuid());
 }
コード例 #5
0
ファイル: Parser.cs プロジェクト: mwoelk83/FluentIL
		internal Parser(IEnumerable<Token> source,
						DynamicMethodBody body = null)
		{
			Source = source;
			MethodBody = body;
			_result = new ParseResult(this);
		}
コード例 #6
0
ファイル: Parser.cs プロジェクト: eknowledger/FluentIL
 public static ParseResult Parse(string expression,
                          DynamicMethodBody methodBody = null)
 {
     return new Parser(
         new ExpressionScanner().Scan(expression),
         methodBody
         ).Parse();
 }
コード例 #7
0
 public override void BuildIL(DynamicMethodBody dynamicMethodBody)
 {
     dynamicMethodBody
             .Ldarg("target")
             .Ldarg("source")
             .Call(this.SourceProperty.GetGetMethod())
             .Call(this.TargetProperty.GetSetMethod());
 }
コード例 #8
0
ファイル: Parser.cs プロジェクト: vendettamit/FluentIL
 public static void Parse(string expression,
                          DynamicMethodBody methodBody = null)
 {
     new Parser(
         new ExpressionScanner().Scan(expression),
         methodBody
         ).Parse();
 }
コード例 #9
0
ファイル: Parser.cs プロジェクト: eknowledger/FluentIL
 internal Parser(IEnumerable<Token> source,
                 DynamicMethodBody body = null)
 {
     Source = source;
     MethodBody = body;
 }
コード例 #10
0
// ReSharper restore InconsistentNaming

        public ILEmitterVisitor(DynamicMethodBody dmb)
        {
            IL = dmb;
        }
コード例 #11
0
 public override void Emit(DynamicMethodBody generator)
 {
     Parser.Parse(Expression, generator);
 }
コード例 #12
0
 public override void Emit(DynamicMethodBody generator)
 {
     generator.Ldc(Value);
 }
コード例 #13
0
ファイル: ExpressionNumber.cs プロジェクト: ElemarJR/FluentIL
 public override void Emit(DynamicMethodBody generator)
 {
     generator.Expression(Expression);
 }
コード例 #14
0
 public abstract void BuildIL(DynamicMethodBody dynamicMethodBody);
コード例 #15
0
ファイル: Number.cs プロジェクト: ElemarJR/FluentIL
 public abstract void Emit(DynamicMethodBody generator);