C#读取匿名对象的属性值的方法总结
通过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;
}
}
——————————————————————————
C#读取匿名对象的属性值的方法总结的更多相关文章
- webdriver高级应用- 改变一个页面对象的属性值
适用于一些无法操作的元素,可以直接改他的属性从而操作,代码如下: #encoding=utf-8 from selenium import webdriver import unittest impo ...
- 读匿名object对象的属性值
读匿名object对象的属性值 1.定义读object对象值的功能方法 public static class StaticClass { public static string ValueByKe ...
- JQuery 操作对象的属性值
通过JQuery去操作前台对象(div,span...)的属性是很常见的事情,本文就简单的介绍几种操作情形. 1):通过属性值去获取对象 2):用JQuery去修改对象的属性值 3):获取并修改对象的 ...
- jquery attr()方法 添加,修改,获取对象的属性值。
jquery attr()方法 添加,修改,获取对象的属性值. jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到 ...
- WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)
WPFS数据绑定(要是后台类对象的属性值发生改变,通知在"client界面与之绑定的控件值"也发生改变须要实现INotitypropertyChanged接口) MainWindo ...
- 获取JSON对象的属性值
1.问题背景 有一个json对象,其中有键值对,那怎样获取json对象中属性值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- JQuery修改对象的属性值
JQuery修改对象的属性值 用到的便是JQuery提供的attr方法,获取属性值的基本结构为:$(obj).attr("属性名"):修改属性值的结构为:$(obj).attr(& ...
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program argu ...
- spring:为javabean的集合对象注入属性值
spring:为JavaBean的集合对象注入属性值 在 spring 中可以对List.Set.Map 等集合进行配置,不过根据集合类型的不同,需要使用不同的标签配置对应相应的集合. 1.创建 Ts ...
随机推荐
- diango使用顺序
使用顺序 settings 静态文件配置 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #文件夹根目录 ...
- [Go] 轻量服务器框架tcp的粘包问题 封包与拆包
tcp传输的数据是以流的形式传输的,因此就没有办法判断到哪里结束算是自己的一个消息,这样就会出现粘包问题,多个包粘在一起了 可以使用这样一个自定义的形式来解决,一个消息分为 head+body he ...
- Linux系统学习 十五、VSFTP服务—匿名用户访问(不推荐使用,不安全)
匿名用户访问 基本配置: anonymous_enable #允许匿名用户访问 anon_upload_enable #允许匿名用户上传 anon_mkdir_write ...
- pymysql用法,Python连接MySQL数据库
Pymysql模块是专门用来操作mysql数据库的模块,使用前需要安装,安装指令:pip install pymysql 操作流程: 第一步:import pymysql 第二步:获取数据库的连接 , ...
- Java死锁演示
Java死锁演示 在线程中嵌套获取锁导致死锁.思路,尽量不要嵌套获取锁. package com.mozq.demo.demo; public class DeadLockDemo { private ...
- office2019专业版激活秘钥 激活码
office2019专业版激活码 激活秘钥 2019年5月更新 [Key]:F4QWT-NMMKH-XPTV9-W9HFB-B4JCQ [剩余次数:900000+] office2019激活 产品秘钥 ...
- Maven項目打包報錯:Plugin execution not covered by lifecycle configuration
Maven項目打包報錯:Plugin execution not covered by lifecycle configuration 使用Eclipse导入一个新的maven项目时不时的会遇到这个错 ...
- 【转载】algorithm、numeric、functional
reference url:http://www.cplusplus.com/reference/algorithm reference url:https://blog.csdn.net/Swust ...
- php获取本机ip
最近在写个东西时,需要获取本机的IP,但是由于php本身不带这样的功能,在网上找了好久也没有一个好办法,突然想到一个好办法,如下代码 <?=gethostbyname($_ENV['COMPUT ...
- C# 英语纠错 LanguageTool
WPF中,对单词拼写错误,textbox有相应的附加属性可以设置. <TextBox SpellCheck.IsEnabled="True" /> 但是此属性只在WPF ...