private static void TestWithExpressionParam(UserService userService, Expression<Func<User, object>> selectorExp, Func<object, UserBrief> maker)
        {
            List<UserBrief> projectBriefsWithExp = userService.GetDynamic(selectorExp, maker);

            foreach (var projectBrief in projectBriefsWithExp)
            {
                Console.WriteLine("Id: {0}, Title: {1}", projectBrief.Id, projectBrief.Email);
            }
        }
        private static void TestDynamicMethods(UserService userService)
        {
            Func<User, object> selector = product => (object)new { product.Id, product.Email };
            Expression<Func<User, object>> selectorExp = product => (object)new { product.Id, product.Email };
            Func<object, UserBrief> maker = product =>
            {
                UserBrief brief = new UserBrief();
                brief.Id = product.GetPropertyValue<int>(o => brief.Id);
                brief.Email = product.GetPropertyValue<string>(o => brief.Email);
                return brief;
            };

            TestWithFuncParam(userService, selector, maker);
            TestWithExpressionParam(userService, selectorExp, maker);
        }