Exemplo n.º 1
0
        public void TargetReturnsReferenceType_DelegateReturnsValueType_ThrowsException()
        {
            var    instance = new ObscenelyAnnoyingClass();
            object arg      = new ClassA();

            var methodToInvoke = MethodReference.Get(() => instance.ReturnInputObject(arg));

            // Throws
            Assert.ThrowsAny <Exception>(() =>
                                         MethodBuilder <Func <object, object, int> >
                                         .Start(_moduleVersionId, methodToInvoke.MetadataToken, (int)OpCodeValue.Callvirt, "ReturnInputObject")
                                         .WithConcreteType(typeof(ObscenelyAnnoyingClass))
                                         .WithParameters(arg)
                                         .Build());
        }
Exemplo n.º 2
0
        public void TargetReturnsObject_DelegateReturnsObject_IsOk()
        {
            var    instance = new ObscenelyAnnoyingClass();
            object arg      = new ClassA();

            var methodToInvoke = MethodReference.Get(() => instance.ReturnInputObject(arg));
            var methodCall     = MethodBuilder <Func <object, object, object> >
                                 .Start(_moduleVersionId, methodToInvoke.MetadataToken, (int)OpCodeValue.Callvirt, "ReturnInputObject")
                                 .WithConcreteType(typeof(ObscenelyAnnoyingClass))
                                 .WithParameters(arg)
                                 .Build();

            var actual = methodCall(instance, arg);

            Assert.Equal(arg, actual);
        }