public void GetEmittableMethod_MethodBuilder()
        {
            var method          = ReflectionObjectMother.GetSomeMethod();
            var emittableMethod = ReflectionEmitObjectMother.CreateMethodBuilder();

            Assert.That(emittableMethod.GetGenericArguments(), Is.Null);
            _innerMock.Stub(stub => stub.GetEmittableMethod(method)).Return(emittableMethod);
            _typeAnalyzerMock.Stub(stub => stub.IsStrongNamed(emittableMethod.DeclaringType)).Return(true);

            Assert.That(() => _decorator.GetEmittableMethod(method), Throws.Nothing);
        }
Beispiel #2
0
        public void GetEmittableMethod_MethodBuilder()
        {
            var method          = ReflectionObjectMother.GetSomeMethod();
            var emittableMethod = ReflectionEmitObjectMother.CreateMethodBuilder();

#if NETFRAMEWORK
            // MethodBuilder in .NET Framework returns null for non-generic types.
            // MethodInfo returns empty, same as MethodInfo and MethodBuilder do in .NET 5.
            Assert.That(emittableMethod.GetGenericArguments(), Is.Null);
#else
            Assert.That(emittableMethod.GetGenericArguments(), Is.Empty);
#endif
            _innerMock.Setup(stub => stub.GetEmittableMethod(method)).Returns(emittableMethod);
            _typeAnalyzerMock.Setup(stub => stub.IsStrongNamed(emittableMethod.DeclaringType)).Returns(true);

            Assert.That(() => _decorator.GetEmittableMethod(method), Throws.Nothing);
        }
Beispiel #3
0
        public void GetEmittableXXX_MembersFromTypeInstantiation()
        {
            var instantiation = typeof(List <>).MakeTypePipeGenericType(_mutableType);
            var field         = instantiation.GetField("_size", BindingFlags.NonPublic | BindingFlags.Instance);
            var ctor          = instantiation.GetConstructor(Type.EmptyTypes);
            var method        = instantiation.GetMethod("Add");

            var emittableType = ReflectionEmitObjectMother.GetSomeTypeBuilder();

            _provider.AddMapping(_mutableType, emittableType);

            var emittableField  = _provider.GetEmittableField(field);
            var emittableCtor   = _provider.GetEmittableConstructor(ctor);
            var emittableMethod = _provider.GetEmittableMethod(method);

            CheckEmittableMemberInstantiation(emittableField, emittableType);
            CheckEmittableMemberInstantiation(emittableCtor, emittableType);
            CheckEmittableMemberInstantiation(emittableMethod, emittableType);
        }