Ejemplo n.º 1
0
        private void ImplementEventAddMethod(CustomEventEmitter eventEmitter)
        {
            FieldReference field;

            if (eventEmitter.EventKind == EventKind.Static)
            {
                field = _classEmitter.CreateStaticField("AddCalled", typeof(bool));
            }
            else
            {
                field = _classEmitter.CreateField("AddCalled", typeof(bool));
            }

            eventEmitter.AddMethod.AddStatement(new AssignStatement(field, new ConstReference(true).ToExpression()));
            eventEmitter.AddMethod.ImplementByReturningVoid();
        }
Ejemplo n.º 2
0
        public void CreateField_WithAttributes()
        {
            var classEmitter = new CustomClassEmitter(Scope, "CreateField_WithAttributes", typeof(object));

            classEmitter.CreateField("_test", typeof(string), FieldAttributes.Private);

            Type t = classEmitter.BuildType();

            Assert.That(t.GetField("_test", BindingFlags.NonPublic | BindingFlags.Instance).Attributes, Is.EqualTo(FieldAttributes.Private));
        }
Ejemplo n.º 3
0
        public void CreateConstructorCreateField()
        {
            var                classEmitter = new CustomClassEmitter(Scope, "CreateConstructorCreateField", typeof(object));
            FieldReference     field        = classEmitter.CreateField("_test", typeof(string));
            ConstructorEmitter constructor  = classEmitter.CreateConstructor(new[] { typeof(string), typeof(int) });

            constructor.CodeBuilder.InvokeBaseConstructor();
            constructor.CodeBuilder
            .AddStatement(new AssignStatement(field, new ArgumentReference(typeof(string), 1).ToExpression()))
            .AddStatement(new ReturnStatement());

            object instance = Activator.CreateInstance(classEmitter.BuildType(), "bla", 0);

            Assert.That(instance.GetType().GetField("_test").GetValue(instance), Is.EqualTo("bla"));
        }
Ejemplo n.º 4
0
 // Create the field which holds the proxied instance
 private FieldReference CreateProxiedField()
 {
     return(_classEmitter.CreateField("_proxied", _proxiedType, FieldAttributes.Private));
 }