从Object对象中读取属性的值
C#是强类型语言,强到多变态?一个对象没有定义某个属性,你想点出来,IDE直接给你报语法错误。远不如js那么自由,想怎么点怎么点。
如果你从别人接口中拿到的就是Object类型,你想获取某个属性的值怎么办?
弱类型语言中,一个对象可以随便点出里面的属性,即使没有定义也只是返回给你一个undefined。强类型语言就必须使用实体(类),还好C#有个dynamic,让c#具备了弱类型语言特性
eg1:
static void Main(string[] args)
{
object obj = new
{
Name = "小明",
SayHi = "你妹的!"
}; dynamic dyName = ((dynamic)obj).Name;
dynamic dySayHi = ((dynamic)obj).SayHi; Console.WriteLine(dyName + "\t" + dySayHi);
}
你可以创建一个实体,用序列化再反序列化的方式,当然笔者不推荐,如果你就用一次的话还要为之创建一个实体,累不累啊!
下面是笔者推荐的方式,先把对象转化成Type类型,再获取它的属性,再获取属性的值
eg2:
static void Main(string[] args)
{
object obj = new
{
Name = "小明",
SayHi = "你妹的!"
}; Console.WriteLine("Name:\t" + obj.GetType().GetProperty("Name").GetValue(obj));
Console.WriteLine("SayHi:\t" + obj.GetType().GetProperty("SayHi").GetValue(obj));
Console.ReadKey();
}
eg3:
class Program
{
static void Main(string[] args)
{
GetObjectPropertyValue();
Console.ReadKey();
} private static void GetObjectPropertyValue()
{ List<object> list = (List<object>)GetObj();//强制类型转化
foreach (var item in list)
{
Console.WriteLine(item.GetType().GetProperty("Title").GetValue(item) + "\t" + item.GetType().GetProperty("Content").GetValue(item));
}
} private static object GetObj()
{
List<object> list = new List<object>();
object message = new
{
Title = "ceshi111",
Content = "hahahah111"
};
object message2 = new
{
Title = "ceshi222",
Content = "hahahah222"
};
list.Add(message);
list.Add(message2);
return list;
}
}
从Object对象中读取属性的值的更多相关文章
- C# 从Object对象中读取属性的值
https://www.cnblogs.com/xbblogs/p/7739483.html
- 微信小程序:给data中对象中的属性设置值与给data中的属性或对象或数组设置值的区别
一.给data中的属性或对象或数组设置值,属性名不需要加引号 this.setData({ material: param, // 这里material为对象 } this.setData({ d ...
- js为Object对象动态添加属性和值 eval c.k c[k]
const appendInfo = () => { const API_SECRET_KEY = 'https://github.com/dyq086/wepy-mall/tree/maste ...
- javascript获取对象中的属性及值
function displayProp(obj){ var names=""; for(var name in obj){ names+=name+": "+ ...
- JavaScript 深入了解对象中的属性
本篇主要介绍JS中对象的属性,包括:属性的分类.访问方式.检测属性.遍历属性以及属性特性等内容. 目录 1. 介绍:描述属性的命名方式.查找路径以及分类 2. 属性的访问方式:介绍'.'访问方式.'[ ...
- C#比较两个对象中的指定字段值是否相等
一.创建CompareFieldAttribute标识要比较的字段 using System; namespace CompareObjField { /// <summary> /// ...
- 枚举对象中的属性 for . . in
枚举对象中的属性:把对象中所有的属性和值都取出来 使用 for . . . in 语句 语法: for(var 变量 in 对象){ } for . . . in 语句 对象中有几个属性,循 ...
- C#验证对象中的属性是否为空的共通方法
在后台接口处理时,经常需要对请求的参数做验证.因此提取了共通方法,方便进行判断. /// <summary> /// 数据验证工具类 /// </summary> public ...
- C#利用反射实现两个类的对象之间相同属性的值的复制
http://blog.csdn.net/u013093547/article/details/53584591 今天在拷贝对象的时候,看着代码实在是有点烦,一堆一样的代码,还是找找有没有直接反射拷贝 ...
随机推荐
- .Net Core + NGINX跳转登录时端口丢失
使用.Net Core + NGINX部署到服务器的时候,如果端口不是使用默认的80端口,在跳转到登录页面时,URL中的端口丢失. NGINX的配置如下: server { listen ; loca ...
- Effective Java(1)-创建和销毁对象
Effective Java(1)-创建和销毁对象
- 无废话网页重构系列——(2)来套Web重构装备
本篇主要从语言入门.规范.工具.构建.库.框架.版本控制等各方面展开,篇幅会有点长,涉及到的工具类,会另开博文详细介绍. 另外说明Web重构是Web前端的开始,主要侧重Web页面,如实现布局与兼容,符 ...
- koa和egg项目webpack热更新实现
背景 在用Node.js+Webpack构建的方式进行开发时, 我们希望能实现修改代码能实时刷新页面UI的效果. 这个特性webpack本身是支持的, 而且基于koa也有现成的koa-webpack- ...
- 使用git在gitlab上拉取代码的方法
最近在项目中用到了gitlab,他是一个类似于github的代码托管工具. 因为是第一次使用还不太熟悉,所以在此记录一下. 1.首先需要使用github的注册账号登录gitlab,查看右上角用户头像处 ...
- 带你走进php大马的结构模块编写之路
本文原创作者:Laimooc 第一部分:前沿综述 本次我主要写了[文件的创建].[文件的删除].[文件的上传].[目录浏览].[命令执行]小模块,以及[组合的目录浏览和文件删除功能]的模块: 实验环境 ...
- Pycharm使用Git
Pycharm使用Git 1.设置git程序路径 2.设置github连接 3.创建git respository 4.提交文件 5.共享给GitHub 6.修改文件push到版本库 7.从版本库ch ...
- FineReport9.0定义数据连接(创建与SQL Server 2016数据库的连接)
1.下载并安装好FineReport9.0和SQL Server 2016 2.开始——>所有应用——>Microsoft SQL Server 2016——>SQL Server ...
- 获取列表数据时,getList 设置默认参数:getList(page = 1),点击分页及前往时,传page参数,其他使用page的默认值:1
获取列表数据时,getList 设置默认参数:getList(page = 1),点击分页及前往时,传page参数,其他使用page的默认值:1
- eolinker接口测试平台的安装部署
1.从GitHub下载安装包: https://github.com/eolinker/CHN-EOLINKER-AMS-Lite-4.0-For-Java 使用 git clone https:// ...