public void EventNameIsNotChangedOnPublicInterfaceImplementation() { var classEmitter = new CustomClassEmitter(Scope, "EventNameIsNotChangedOnPublicInterfaceImplementation", typeof(object), new[] { typeof(IInterfaceWithEvent) }, TypeAttributes.Public | TypeAttributes.Class, false); CustomEventEmitter eventEmitter = classEmitter.CreatePublicInterfaceEventImplementation( typeof(IInterfaceWithEvent).GetEvent("Event", _declaredInstanceBindingFlags)); eventEmitter.AddMethod = classEmitter.CreateInterfaceMethodImplementation( typeof(IInterfaceWithEvent).GetMethod("add_Event", _declaredInstanceBindingFlags)); eventEmitter.AddMethod.AddStatement(new ReturnStatement()); eventEmitter.RemoveMethod = classEmitter.CreateInterfaceMethodImplementation( typeof(IInterfaceWithEvent).GetMethod("remove_Event", _declaredInstanceBindingFlags)); eventEmitter.RemoveMethod.AddStatement(new ReturnStatement()); Type builtType = classEmitter.BuildType(); Assert.That(builtType.GetEvent("Event", _declaredInstanceBindingFlags), Is.Not.Null); }
public void CreatePublicInterfaceEventImplementation() { var classEmitter = new CustomClassEmitter(Scope, "CreatePublicInterfaceEventImplementation", typeof(object), new[] { typeof(IInterfaceWithEvent) }, TypeAttributes.Public | TypeAttributes.Class, false); CustomEventEmitter eventEmitter = classEmitter.CreatePublicInterfaceEventImplementation( typeof(IInterfaceWithEvent).GetEvent("Event", _declaredInstanceBindingFlags)); eventEmitter.AddMethod = classEmitter.CreateInterfaceMethodImplementation( typeof(IInterfaceWithEvent).GetMethod("add_Event", _declaredInstanceBindingFlags)); eventEmitter.AddMethod.AddStatement(new ReturnStatement()); eventEmitter.RemoveMethod = classEmitter.CreateInterfaceMethodImplementation( typeof(IInterfaceWithEvent).GetMethod("remove_Event", _declaredInstanceBindingFlags)); eventEmitter.RemoveMethod.AddStatement(new ReturnStatement()); Type builtType = classEmitter.BuildType(); var instance = (IInterfaceWithEvent)Activator.CreateInstance(builtType); EventHandler eventHandler = delegate { }; instance.Event += eventHandler; instance.Event -= eventHandler; }