码迷,mamicode.com
首页 > 其他好文 > 详细

使用Expression tree访问类的属性名称与值

时间:2014-12-04 23:04:40      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   使用   sp   for   

  表达式树Expression是Linq中一项比较重要的功能,对其深刻了解Lamda以及计算表达式有很大的帮助.

下面是利用 Expression<Func<Object>>[]取得Func<Object>中的操作数或成员名称以及值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using System.Reflection;

namespace ExpressionTree
{
    class Program
    {
        static void Main(string[] args)
        {
            MyClass cls = new MyClass() { Memo = "ffffddddd", Name = "dfdf", Age = 33 };
            Dictionary<string, string> dic = GetProps(() => cls.Memo, () => cls.Age);

            foreach (KeyValuePair<string,string> item in dic)
            {
                Console.WriteLine(item.Key + "=" + item.Value);
            }

            Console.Read();

        }

        static Dictionary<string, string> GetProps(params Expression<Func<Object>>[] funcs)
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();

            MemberExpression member = null;
            UnaryExpression unary = null;

            foreach (Expression<Func<Object>> func in funcs)
            {
                unary = func.Body as UnaryExpression;
                if (unary != null)
                {
                    member = unary.Operand as MemberExpression;
                }
                else
                {
                    member = func.Body as MemberExpression;
                }
                PropertyInfo prop = member.Member as PropertyInfo;
                object value    = func.Compile().Invoke();

                dic.Add(prop.Name, Convert.ToString(value));
            }


            return dic;
        }
    }

    class MyClass
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Memo { get; set; }
    }
}

 

使用Expression tree访问类的属性名称与值

标签:style   blog   io   ar   color   os   使用   sp   for   

原文地址:http://www.cnblogs.com/cang/p/4145180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!