Exemple #1
0
        public void TestGetValue_Complex()
        {
            var test = new LambdaTest1()
            {
                Name = "a", A = new LambdaTest1.TestA()
                {
                    Address = "b"
                }
            };

            //获取表达式的值
            Expression <Func <LambdaTest1, bool> > expression = t => t.Name == test.Name;

            Assert.AreEqual("a", LambdaHelper.GetValue(expression), "==test.Name");
            Expression <Func <LambdaTest1, bool> > expression2 = t => t.Name == test.A.Address;

            Assert.AreEqual("b", LambdaHelper.GetValue(expression2), "==test.A.Address");

            //获取方法的值
            Expression <Func <LambdaTest1, bool> > expression3 = t => t.Name.Contains(test.Name);

            Assert.AreEqual("a", LambdaHelper.GetValue(expression3), "Contains test.Name");
            Expression <Func <LambdaTest1, bool> > expression4 = t => t.Name.Contains(test.A.Address);

            Assert.AreEqual("b", LambdaHelper.GetValue(expression4), "==test.A.Address");
        }
Exemple #2
0
        public void TestGetValue_Enum()
        {
            var lambdaTestEnum = new LambdaTest1();

            lambdaTestEnum.NullableEnumValue = LogType.Error;

            //属性为枚举,值为枚举
            Expression <Func <LambdaTest1, bool> > expression = test => test.EnumValue == LogType.Debug;

            Assert.AreEqual(LogType.Debug.Value(), LambdaHelper.GetValue(expression));

            //属性为枚举,值为可空枚举
            expression = test => test.EnumValue == lambdaTestEnum.NullableEnumValue;
            Assert.AreEqual(LogType.Error, LambdaHelper.GetValue(expression));

            //属性为可空枚举,值为枚举
            expression = test => test.NullableEnumValue == LogType.Debug;
            Assert.AreEqual(LogType.Debug, LambdaHelper.GetValue(expression));

            //属性为可空枚举,值为可空枚举
            expression = test => test.NullableEnumValue == lambdaTestEnum.NullableEnumValue;
            Assert.AreEqual(LogType.Error, LambdaHelper.GetValue(expression));

            //属性为可空枚举,值为null
            lambdaTestEnum.NullableEnumValue = null;
            expression = test => test.NullableEnumValue == lambdaTestEnum.NullableEnumValue;
            Assert.AreEqual(null, LambdaHelper.GetValue(expression));
        }
Exemple #3
0
        public void TestGetValue_Instance()
        {
            var test = new LambdaTest1()
            {
                Name = "a", A = new LambdaTest1.TestA()
                {
                    Address = "b", B = new LambdaTest1.TestA.TestB()
                    {
                        Name = "c"
                    }
                }
            };

            //一级属性
            Expression <Func <string> > expression = () => test.Name;

            Assert.AreEqual("a", LambdaHelper.GetValue(expression));

            //二级属性
            Expression <Func <string> > expression2 = () => test.A.Address;

            Assert.AreEqual("b", LambdaHelper.GetValue(expression2));

            //三级属性
            Expression <Func <string> > expression3 = () => test.A.B.Name;

            Assert.AreEqual("c", LambdaHelper.GetValue(expression3));
        }