Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }