.NET Framework 提供了两种访问某类型的元数据的方式:通过 System.Reflection 命名空间中提供的反射 API,以及通过 TypeDescriptor 类。反射是可用于所有类型的通用机制,因为它是基于根 Object 类的 GetType 方法建立的。反射为某个类型返回的信息不可扩展,因为编译了目标类型后就不能对其进行修改。有关更多信息,请参见 反射 中的主题。

相反,TypeDescriptor 是组件的可扩展检查机制:即实现 IComponent 接口的那些类。与反射不同的是,它并不检查方法。通过目标组件的Site 中提供的几种服务,可以动态扩展 TypeDescriptor

static void Main(string[] args)
        {
            var defaults = new { controller = "Home", action = "Index", id = UrlParameter.Optional };
 
            PropertyDescriptorCollection props = TypeDescriptor.GetProperties(defaults);
            foreach (PropertyDescriptor prop in props)
            {
                object val = prop.GetValue(defaults);
                Console.WriteLine("name:{0}, value:{1}", prop.Name, val);
            }
        }

output:

name:controller, value:Home
name:action, value:Index
name:id, value:

访问某类型的元数据的方式-TypeDescriptor 类的更多相关文章

  1. Android中访问sdcard路径的几种方式

    以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统 ...

  2. 部署在IIS服务器的asp.net 网站,禁止访问指定类型文件

    网站上的一些文件不希望用户访问,可以通过下面的方式简单实现.不需写代码(在IIS6下试验过). 第一步,在IIS中实现映射. 哪些文件需要特殊处理. 通俗的将就是将哪种类型的文件交给特定的工厂来处理. ...

  3. Struts2中访问web元素的四种方式

    Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...

  4. 判断浏览器类型用 document.documentMode方式,

    if ( document.documentMode && document.documentMode < 9 ){ document.write( '<script sr ...

  5. 记住 Python 变量类型的三种方式

    title: 记住变量类型的三种方式 date: 2017-06-11 15:25:03 tags: ['Python'] category: ['Python'] toc: true comment ...

  6. DataBinding初探 数据绑定的用法 ,import 集合类型,绑定的表达式,访问集合类型2

    数据绑定的用法 import语法   <data> <import type="android.view.view"/> </data>   如 ...

  7. js 判断访问终端类型

    // 判断访问终端类型 var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appV ...

  8. 检测对象类型的两种方式,constructor属性和instanceof

    //本例是为了记录检测对象类型的两种方式,即constructor属性和instanceof操作符.详见<高三>P145        function Person(name, age, ...

  9. C# WCF发布服务的元数据的方式

    发布服务元数据的方式有两种:一是基于HTTP-GET协议提供元数据,它是一种绝大多数平台都能支持的简单text-based协议:另一种是元数据交换终结点. 1.基于HTTP-GET协议 <?xm ...

随机推荐

  1. 使用SimpleDateFormat 将毫秒转换成时分秒 格式:HH:mm:ss

    public static String dateFormatFromMilliSecond(long seconds) {        //初始化format格式    SimpleDateFor ...

  2. nginx 配置虚拟主机访问PHP文件 502错误的解决方法

    最近配置Nginx 服务器虚拟主机 访问目录发现报502错误 百度了很多方法 都不管用  我擦 各种抓狂----- 原本Nginx配置如下: 网上找了很多方法: 查看日志   借助nginx的错误日志 ...

  3. python基础知识03-格式化输出和深浅复制

    VIM中HJKL可以上下左右移动光标. 格式化输出和深浅复制 1.字符串的拼接和格式化 sudo pip3 install ipython 安装 ipython 进入 字符串相加 str1 + str ...

  4. DEV Express中ImageCollection的使用

    1,        ImageCollection作为窗体组件的一种,位于Components分类下,拖进窗体以后,显示在界面的底部. 2,        注意ImageCollection的Imag ...

  5. datatable生成easyui的json格式汇总( 转)

    转自 http://www.cnblogs.com/WikStone/archive/2012/07/02/2573137.html 目前项目没有使用第三方的json转换库,都是根据json格式进行字 ...

  6. hdu 1501 基本搜索深搜

    #include<stdio.h> #include<string.h> char s1[300],s2[300],s[500]; int len1,len2,len3,fla ...

  7. 关于datetime,date,timestamp,year,time时间类型小结

    关于datetime,date,timestamp,year,time时间类型 datetime占用8个字节 日期范围:”1000-01-01 00:00:00” 到”9999-12-31 23:59 ...

  8. 巴蜀3540 -- 【Violet 6 最终话】蒲公英

    Description 原题的时间限制是 2s . 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还 ...

  9. Codeforces936B. Sleepy Game

    还好这场没打 MD什么破题 n<=100000,m<=200000的图问从s点出发能否走奇数条边到一个没有出度的点. 直观的想法:做一个bfs,$f(i,0/1)$表示从$s$出发到$i$ ...

  10. hdu5608:function

    $n^2-3n+2=\sum_{d|i}f(i)$,问$f(i)$前$n$项和. 方法一:直接切入! $S(n)=\sum_{i=1}^{n}f(i)=\sum_{i=1}^{n}(i^2-3i+2- ...