C# - 匿名对象属性的赋值与取值

在new出匿名对象的函数内可以直接调用该匿名对象的属性取值。

可是在其它函数就无法调用匿名对象的属性或方法。

这时,我们可以通过c#的反射机制取值:

文章出处:https://www.cnblogs.com/aucy/p/9102915.html

======================================================

C# 匿名对象的序列化

在开发的时候,经常遇到对象的序列化,尤其是在和外部系统交互的时候。在调用其他接口获得数据的时候大多都是json字符串,而我们相对其进行处理,正常思路是建一个与之对应的强类型的model。但是,有时候我们不想新建一个 麻烦 想利用现有的强类型去进行处理,这时候我们想到了用object 一个伪的匿名对象。然后利用反射取出字段值给现有类型的字段赋值 但是我在利用o反射取object的值的时候得到的propertyinfo为null,我就用其他办法解决了,但是有点麻烦。今天逛博客园发现了一个好用的方法 虽然不理解其中原理,但是经测试可用
            List<object> obj = new List<object>();
            obj.Add(new { aa = 1, bb = 1 });
            obj.Add(new { aa = 1, bb = 2 });
           
            var objs = obj.Select(p => p.Cast(new { aa = 0, bb = 0 })).ToList();
 static class Extensions
    {
        public static T Cast<T>(this object obj, T sample)
        {
            return (T)obj;
        }
    }
 学习下 可以直接取出objs里面的值 有那位牛人解释下其中原理

原文:https://blog.csdn.net/s15981924260/article/details/80623035

=======================================================================

另外在给个dynamic的参考,参考:

C# 匿名对象(匿名类型)、var、动态类型 dynamic

c# 匿名对象增加动态属性

原文地址:https://www.cnblogs.com/mq0036/p/10674799.html

时间: 2024-08-10 17:01:21

C# - 匿名对象属性的赋值与取值的相关文章

16JavaScript 给单元格设置自定义的属性并赋值========怎么取值

1 <html xmlns="http://www.w3.org/1999/xhtml"> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 4 <title></title> 5 <script type="text/javascript"> 6

Java反射 - 简单的给Bean赋值和取值

由于项目的实际需要,所以利用java反射原理写了一个简单给bean赋值和取值通用的类,在此记录下方便自己日后用到,也为需要的兄弟提供个参考例子. 工具类BeanRefUtil: [java] view plain copy print? package com.test; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.u

关于ligerform中select与text的赋值与取值

如有下ligerform表单: var formData = [ { display: "区域", name: "QYYJ", newline: true, labelWidth: 100, width: 220, space: 2, type: "select", comboboxName: "QYYJName", options: { valueFieldID: "QYYJ" }, group: &qu

使用mybatis如果类属性名和数据库中的属性名不一样取值就会为null

使用mybatis时如果类属性名和数据库中的属性名不一样取值就会为null 这是不能再去改变javabean中的属性,只能改变sql语句.语句如下所示: <select id="selectEmp" resultType="com.atguigu.mybatis.bean.Employee"> select id,last_name lastName,gender,email from tbl_employee where id= #{id} </

JQuery里属性赋值,取值prop()和attr()方法?

1.赋值的时候 如果是<input type="checkbox" checked>这样的只有属性名就能生效的属性 推荐prop,即:$('input').prop('checked',true); 同时,false表示取消,即:$('input').prop('checked',false); 当然attr也行的:$('input').attr('checked','这里写什么都行的'); 取消属性就是移除:$('input').removeAttr('checked')

JQuery里input属性赋值,取值prop()和attr()方法?

一.赋值的时候 如果是<input type="checkbox" checked>这样的只有属性名就能生效的属性 推荐prop,即:$('input').prop('checked',true); 同时,false表示取消,即:$('input').prop('checked',false); 当然attr也行的:$('input').attr('checked','这里写什么都行的'); 取消属性就是移除:$('input').removeAttr('checked')

用JQUERY为INPUT的TXT类型赋值及取值操作

注意和纯JS操作的区别,一个是对象,一个是字串,如下说明: 在Jquery中,用$("#id")来获得页面的input元素,其相当于document.getElementById("element")但是,该获取的是一个Jquery对象,而不是一个dom element对象.value是dom element对象的属性.所以,使用$("#id").value不能取到值取值的方法如下: var job_name = $("#id_jenk

2016.5.23 用反射技术为实体类变量赋值、取值

clobj是任意一个数据库表对应的实体类空白实例 TERMINAL_PRO clobj= new TERMINAL_PRO(); DataRow row = dtt.Rows[0]; Type t = clobj.GetType(); foreach (PropertyInfo pi in t.GetProperties()) //不用考虑属性的类型 { string name = pi.Name; //获得此属性名称 if (dtt.Columns.Contains(name)) { obje

Jquery为下拉列表动态赋值与取值,取索引

接触前端也不久对jquery用的也只是皮毛,写过去感觉能复用的发出来,大家指点下 1.下拉列表动态赋值 function initddlYear() { var mydate = new Date(); var startYear = mydate.getFullYear() - 50; var endYear = mydate.getFullYear() + 50; for (var i = startYear; i < endYear; i++) { jQuery("#ddlYear&