dynamic能替代这反射吗

问题描述

dynamic能替代这反射吗

反射实现:
string pt="~/pt/list.ascx";
UserControl uc = (UserControl)LoadControl(pt);
Type ct = uc.GetType();

            PropertyInfo[] pInfo = ct.GetProperties();
            foreach (PropertyInfo pi in pInfo)
            {
                if (pi.DeclaringType == ct)
                {
                    string s = pi.Name;
                    object o = r[s];
                    if (o is string || o is int || o is bool)
                    {
                        ct.GetProperty(s).SetValue(uc, o, null);
                    }
                }
            }
            Master.Master.FindControl("body").FindControl("m").Controls.Add(uc);

dynamic实现(失败):
string pt="~/pt/list.ascx";
dynamic uc = LoadControl(pt);
uc["n"] = 10;//这里无法知道属性名为"n"

解决方案

dynamic uc = LoadControl(pt);
uc.n = 10;看看
前提是要有n这个属性,并且类型是int

解决方案二:

只要有,而且是公共可写的属性,应该没问题。

时间: 2024-09-11 22:34:29

dynamic能替代这反射吗的相关文章

C#4.0的dynamic用法(一)——巧用反射

在平时做框架架构设计的时候,头疼之一的是处处得采用反射,但有了C#4.0,发现dynamic完全可以取代反射,这个功能让我有些激动,立马在VS2010将日志跟踪器框架里的第一个反射的代码升级到C#4.0,结果一点都不令人失望,代码简化了很多. 先看看用dynamic替换反射后的代码吧: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using Syst

asp.net c# 轻量ORM框架开发之反射与动态编译

对象关系映射,靠纯手打,是个超级繁琐又类的苦力活,即便它能给你再高的运行效率,但是也会损失开发效率. c#在netframework中其实已经提供了ORM框架了,叫做entity framework,这个框架其实已经做的蛮好的了,但是框架实在是太重,重到写出来的代码在配置不那么好的电脑上跑起来都卡顿. 因此我们决定自己写这么一个框架,一来重在轻量:二来,就是想探探路,看看ORM框架到底是怎么做出来的. 当然,让我自己凭空造楼是做不到的,但是我们可以借鉴,尤其是在互联网这么发达的时代,去githu

反射之动态创建对象

前言 C#有关反射的话题已经是个老生常谈的话题,也许园友一看这标题都不屑去看了,但是既然拿出来讲必有讲之道理,当然,不喜勿喷,高手请绕道!直入话题. 讨论  定义一个Person类代码如下 1 public class Person 2 { 3 4 /// <summary> 5 /// 年龄 6 /// </summary> 7 public int Age { get; set; } 8 9 /// <summary> 10 /// 姓名 11 /// </s

ASP.NET MVC小结之基础篇(一)_实用技巧

前言:前几天要准备一个演讲,所以准备了MVC的一些基本的东西,以前也使用过MVC,但是只是使用,而不是去了解,所以趁着这个机会好好的把别人的MVC视频看了一下(是一个微软的MVP会员发布的视频,相信有些人都看过),整理除了这个笔记,共享一下子,基本MVC的所有东西都介绍了,但是都是很基础的东西.本来打算一篇发表完的,但是发现东西有点多,所以分成了两篇文章! 什么是ASP.NET MVC (1) ASP.NET MVC是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架 (2)M

编写高质量代码改善C#程序的157个建议[为类型输出格式化字符串、实现浅拷贝和深拷贝、用dynamic来优化反射]

原文:编写高质量代码改善C#程序的157个建议[为类型输出格式化字符串.实现浅拷贝和深拷贝.用dynamic来优化反射] 前言 本文已更新至http://www.cnblogs.com/aehyok/p/3624579.html .本文主要学习记录以下内容: 建议13.为类型输出格式化字符串 建议14.正确实现浅拷贝和深拷贝 建议15.使用dynamic来简化反射实现 建议13.为类型输出格式化字符串   有两种方法可以为类型提供格式化的字符串输出. 一种是意识到类型会产生格式化字符串输出,于是

使用dynamic来简化反射实现,并且提高了性能。

本人转载:http://www.cnblogs.com/cuitsl/archive/2012/01/06/2314636.html 与反射的比较 首先能看到的是,dynamic与反射相比,执行相同操作所需的代码少的多. 如调用类Me中的GetName()方法. class Me {     public string Blog { get; set; }     public string GetName()     {         return"Zhenxing Zhou";

Flash AS3 中的反射 — Reflection

谢草莓和 yhc13 提供人肉翻译机支持 什么是反射反射 (Reflection) 是指在程序在运行时 (run-time) 获取类信息的方式. 诸如实现动态创建类实例, 方法等. 在很语言中都有相关的的实现, 如 Java 和 c# 等 反射有什么用在 as3 与 as2 不同, 类实例中任何元素, 如变量 (variable), 访问器 (accessor, 即 getter / setter), 方法 (method) 都是不可被 for..in 遍历的 (不是默认哦, 目前我还没找到办法

Android中利用反射技术实现加减乘除

JAVA反射机制定义: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有 属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取 的信息以及动态调用对象的方法的功能称为java语言的反射机制. Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象:在运行时判断任意一个类所具有的成员变量和 方法:在运行时调用任意一个对象的方法:生成动态代理. 有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的

AJAX和Web开发新技术:Dynamic Faces

ajax|web Project Dynamic Faces是数个扩展JavaServer Faces技术的的项目之一.Project Dynamic Faces是一个创新型的项目,提供了向基于JavaServer Faces技术的应用软件增添Ajax功能的方法.它使我们能够让应用软件已经在使用的任何JavaServer Faces组件支持Ajax功能.我们无需对组件进行修改就能够使它们支持Ajax,我们也无需对应用软件进行任何修改就可以使它具有Ajax的魔力. 要使应用软件具有Ajax魔力,我