通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属性值。

var objUser = new {Name="Lilei",Age=18 };
//此时可直接读取匿名类属性
Console.WriteLine("Name:" + objUser.Name);// Name:Lilei

但当将匿名对象转换成object后,就无法直接读取属性值了;

static object GetObj()
{
var obj = new { Name = "Lilei", Age = 18 };
return obj;
}
static void Main(string[] args)
{
var obj = GetObj();//此时已无法通过obj.Name的方式获取属性值了
}

1、通过反射的方式获取属性值

static object GetObj()
{
var obj = new { Name = "Lilei", Age = 18 };
return obj;
}
static void Main(string[] args)
{
var obj = GetObj();
//此时可通过反射的方式获取属性值
string objName = obj.GetType().GetProperty("Name").GetValue(obj).ToString();
Console.WriteLine(objName);// Lilei
}

2、新建个扩展方法,将object转成对应的匿名对象

class Program
{
static void Main(string[] args)
{
var obj = GetObj();
var user = obj.ObjCast(new { Name = "", Age = 0 });
Console.WriteLine("Name:{0},Age:{1}", user.Name, user.Age);// Name:Lilei,Age:18 var objList = GetObjList();
var userList = objList.Select(p => p.ObjCast(new { Name = "", Age = 0 })).ToList();
userList.ForEach(p =>
{
Console.WriteLine("Name:{0},Age:{1}", p.Name, p.Age);
});
// Name:Lilei,Age:18
// Name:HanMeimei,Age:20
}
static object GetObj()
{
var obj = new { Name = "Lilei", Age = 18 };
return obj;
}
static List<object> GetObjList()
{
List<object> objList = new List<object>();
objList.Add(new { Name = "Lilei", Age = 18 });
objList.Add(new { Name = "HanMeimei", Age = 20 });
return objList;
}
}
static class Extensions
{
public static T ObjCast<T>(this object obj, T sample)
{
return (T)obj;
}
}

——————————————————————————

最新文章

  1. 第22/24周 等待和I/O延迟统计
  2. Spring学习进阶(二)Spring IoC
  3. python 代码片段8
  4. Bulk Insert &amp; BCP执行效率对比
  5. Redhat 使用中文安装后更换为英文的设定
  6. sql 生成excel
  7. 零基础学习云计算及大数据DBA集群架构师【预科2015年12月14日周一】
  8. 浅谈SpringMVC(二)
  9. 52. 模版和设计元素——Lotus Notes的代码重用
  10. ThinkPHP 3.2 开放 cache注缓存,过滤非法字符
  11. PHP防SQL注入攻击
  12. mysql关于char和varchar的查询效率问题
  13. Zookeeper并不保证读取的是最新数据
  14. how to avoid inheritance abuse
  15. ElasticSearch聚合分析
  16. 【Spring】26、利用Spring的AbstractRoutingDataSource解决多数据源,读写分离问题
  17. 使用HashSet&lt;&gt;去除重复元素的集合
  18. Http请求中请求头Content-Type讲解
  19. Asterisk 的安全性
  20. Visual Studio的“Waiting for a required operation to complete...”问题

热门文章

  1. 页面中加入地图map
  2. windows下安装mysql教程
  3. MySQL数据库~~~~~存储引擎
  4. zhy2_rehat6_mysql04 - MHA_故障演示与切换.txt
  5. Nginx:反向代理
  6. Linux系统学习 二十、SAMBA服务—介绍、安装、端口
  7. subprocess之check_out用法
  8. web测试点集合
  9. 关于eclipse的maven项目Java Build Path中maven依赖报错问题
  10. 多线程编程学习七( Fork/Join 框架).