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(); }
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)); }
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")); }
// Create the field which holds the proxied instance private FieldReference CreateProxiedField() { return(_classEmitter.CreateField("_proxied", _proxiedType, FieldAttributes.Private)); }