예제 #1
0
        public void StructTypeWithParameterlessConstructor(bool useInterpreter)
        {
            Expression <Func <ValueTypeWithParameterlessConstructor> > lambda =
                Expression.Lambda <Func <ValueTypeWithParameterlessConstructor> >(
                    Expression.Default(typeof(ValueTypeWithParameterlessConstructor)));
            Func <ValueTypeWithParameterlessConstructor> func         = lambda.Compile(useInterpreter);
            ValueTypeWithParameterlessConstructor        defaultValue = func();

            Assert.False(defaultValue.ConstructorWasRun);
        }
예제 #2
0
        public static void CheckNewStructWithParameterlessConstructorByTypeTest(bool useInterpreter)
        {
            Expression <Func <ValueTypeWithParameterlessConstructor> > e =
                Expression.Lambda <Func <ValueTypeWithParameterlessConstructor> >(
                    Expression.New(typeof(ValueTypeWithParameterlessConstructor)));
            Func <ValueTypeWithParameterlessConstructor> f = e.Compile(useInterpreter);

            ValueTypeWithParameterlessConstructor newValue = f();

            Assert.True(newValue.ConstructorWasRun);
        }
예제 #3
0
        public static void CheckNewStructWithParameterlessConstructorByConstructorInfoTest(bool useInterpreter)
        {
            ConstructorInfo ctorInfo = typeof(ValueTypeWithParameterlessConstructor).GetConstructor(Type.EmptyTypes);

            Assert.NotNull(ctorInfo);

            Expression <Func <ValueTypeWithParameterlessConstructor> > e =
                Expression.Lambda <Func <ValueTypeWithParameterlessConstructor> >(
                    Expression.New(ctorInfo));
            Func <ValueTypeWithParameterlessConstructor> f = e.Compile(useInterpreter);

            ValueTypeWithParameterlessConstructor newValue = f();

            Assert.True(newValue.ConstructorWasRun);
        }