Пример #1
0
        public void AddEvent(CodeGenerationContext context, MutableEventInfo event_)
        {
            ArgumentUtility.CheckNotNull("context", context);
            ArgumentUtility.CheckNotNull("event_", event_);

            var addMethod    = event_.MutableAddMethod;
            var removeMethod = event_.MutableRemoveMethod;
            var raiseMethod  = event_.MutableRaiseMethod;

            var eventBuilder = context.TypeBuilder.DefineEvent(event_.Name, event_.Attributes, event_.EventHandlerType);

            DefineCustomAttributes(eventBuilder, event_);

            eventBuilder.SetAddOnMethod(context.MethodBuilders[addMethod]);
            eventBuilder.SetRemoveOnMethod(context.MethodBuilders[removeMethod]);
            if (raiseMethod != null)
            {
                eventBuilder.SetRaiseMethod(context.MethodBuilders[raiseMethod]);
            }
        }
Пример #2
0
        public void Initialization_PrivateAccessors()
        {
            var addMethod = MutableMethodInfoObjectMother.Create(
                attributes: MethodAttributes.Private,
                returnType: typeof(void),
                parameters: new[] { new ParameterDeclaration(_handlerType, "handler") });
            var removeMethod = MutableMethodInfoObjectMother.Create(
                attributes: MethodAttributes.Private,
                returnType: typeof(void),
                parameters: new[] { new ParameterDeclaration(_handlerType, "handler") });
            var raiseMethod = MutableMethodInfoObjectMother.Create(
                attributes: MethodAttributes.Private,
                returnType: _returnType,
                parameters: new[] { new ParameterDeclaration(_argumentType, "") });

            var event_ = new MutableEventInfo(_declaringType, _name, _attributes, addMethod, removeMethod, raiseMethod);

            Assert.That(event_.MutableAddMethod, Is.SameAs(addMethod));
            Assert.That(event_.MutableRemoveMethod, Is.SameAs(removeMethod));
            Assert.That(event_.MutableRaiseMethod, Is.SameAs(raiseMethod));
        }
Пример #3
0
        public void SetUp()
        {
            _declaringType = MutableTypeObjectMother.Create();
            _name          = "Event";
            _attributes    = (EventAttributes)7;
            _argumentType  = ReflectionObjectMother.GetSomeType();
            _returnType    = ReflectionObjectMother.GetSomeOtherType();
            _handlerType   = typeof(Func <,>).MakeGenericType(_argumentType, _returnType);
            _addMethod     = MutableMethodInfoObjectMother.Create(
                attributes: MethodAttributes.Public,
                returnType: typeof(void),
                parameters: new[] { new ParameterDeclaration(_handlerType, "handler") });
            _removeMethod = MutableMethodInfoObjectMother.Create(
                attributes: MethodAttributes.Public,
                returnType: typeof(void),
                parameters: new[] { new ParameterDeclaration(_handlerType, "handler") });
            _raiseMethod = MutableMethodInfoObjectMother.Create(
                attributes: MethodAttributes.Public,
                returnType: _returnType,
                parameters: new[] { new ParameterDeclaration(_argumentType, "") });

            _event = new MutableEventInfo(_declaringType, _name, _attributes, _addMethod, _removeMethod, _raiseMethod);
        }
Пример #4
0
 public EventInfo GetGeneratedEvent(MutableEventInfo mutableEvent)
 {
     return((EventInfo)GetGeneratedMember(mutableEvent));
 }
Пример #5
0
        public void Initialization_NoRaiseMethod()
        {
            var event_ = new MutableEventInfo(_declaringType, _name, _attributes, _addMethod, _removeMethod, null);

            Assert.That(event_.MutableRaiseMethod, Is.Null);
        }