MSDN的Specifying Fully Qualified Type Names指明了C#中反射接受的字符串需要满足如下的Backus-Naur Form语法。

BNF grammar of fully qualified type names

TypeSpec                          :=   ReferenceTypeSpec

|     SimpleTypeSpec

ReferenceTypeSpec            :=   SimpleTypeSpec '&'

SimpleTypeSpec                :=   PointerTypeSpec

|     ArrayTypeSpec

|     TypeName

PointerTypeSpec                :=   SimpleTypeSpec '*'

ArrayTypeSpec                  :=   SimpleTypeSpec '[ReflectionDimension]'

|     SimpleTypeSpec '[ReflectionEmitDimension]'

ReflectionDimension           :=   '*'

|     ReflectionDimension ',' ReflectionDimension

|     NOTOKEN

ReflectionEmitDimension    :=   '*'

|     Number '..' Number

|     Number '…'

|     ReflectionDimension ',' ReflectionDimension

|     NOTOKEN

Number                            :=   [0-9]+

TypeName                         :=   NamespaceTypeName

|     NamespaceTypeName ',' AssemblyNameSpec

NamespaceTypeName        :=   NestedTypeName

|     NamespaceSpec '.' NestedTypeName

NestedTypeName               :=   IDENTIFIER

|     NestedTypeName '+' IDENTIFIER

NamespaceSpec                 :=   IDENTIFIER

|     NamespaceSpec '.' IDENTIFIER

AssemblyNameSpec           :=   IDENTIFIER

|     IDENTIFIER ',' AssemblyProperties

AssemblyProperties            :=   AssemblyProperty

|     AssemblyProperties ',' AssemblyProperty

AssemblyProperty              :=   AssemblyPropertyName '=' AssemblyPropertyValue

Backus-Naur Form的介绍可以看wikipedia的介绍:Backus–Naur Form。他的主要内容如下:

  1. 在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
  2. 在双引号外的字(有可能有下划线)代表着语法部分。
  3. 尖括号( < > )内包含的为必选项。
  4. 方括号( [ ] )内包含的为可选项。
  5. 大括号( { } )内包含的为可重复0至无数次的项。
  6. 竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
  7. ::= 是“被定义为”的意思。

所以MSDN的表格的第一行就是说,TypeSpec定义为ReferenceTypeSpec或者SimpleTypeSpec,而ReferenceTypeSpec又被定义为SimpleTypeSpec '&',SimpleTypeSpec定义为PointerTypeSpec或者ArrayTypeSpec或者TypeName。以此类推。

C#中反射接受的字符串需要满足的Backus-Naur Form语法的更多相关文章

  1. [转载] linux查找目录下的所有文件中是否含有某个字符串

    链接自 http://blog.sina.com.cn/s/blog_691a84f301015khx.html,并略加修订. 查找目录下的所有文件中是否含有某个字符串 find .|xargs gr ...

  2. linux查找目录下的所有文件中是否含有某个字符串

    查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l ...

  3. 查找目录下的所有文件中是否含有某个字符串 linux

    查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...

  4. 在C++中反射调用.NET(二)

    反射调用返回复杂对象的.NET方法 定义数据接口 上一篇在C++中反射调用.NET(一)中,我们简单的介绍了如何使用C++/CLI并且初步使用了反射调用.NET程序集的简单方法,今天我们看看如何在C+ ...

  5. 在C++中反射调用.NET(一)

    为什么要在C++中调用.NET 一般情况下,我们常常会在.NET程序中调用C/C++的程序,使用P/Invoke方式进行调用,在编写代码代码的时候,首先要导入DLL文件,然后在根据C/C++的头文件编 ...

  6. 在C++中反射调用.NET(三)

    在.NET与C++之间传输集合数据 上一篇<在C++中反射调用.NET(二)>中,我们尝试了反射调用一个返回DTO对象的.NET方法,今天来看看如何在.NET与C++之间传输集合数据. 使 ...

  7. Java中反射的实现方式

    所谓反射,是指在运行时状态中,获取类中的属性和方法,以及调用其中的方法的一种机制.这种机制的作用在于获取运行时才知道的类(Class)及其中的属性(Field).方法(Method)以及调用其中的方法 ...

  8. linux查看目录下所有文件内容中是否包含某个字符串

    转发自:http://blog.csdn.net/yimingsilence/article/details/76071949 查找目录下的所有文件中是否含有某个字符串 find .|xargs gr ...

  9. JS 中 JSON 对象与字符串之间的相互转换

    在开发的过程中,如果对于少量参数的前后台传递,可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,这样后台 接受的时候Request多个很麻烦 ...

随机推荐

  1. js 中读取JSON的方法探讨

    方法一:函数构造定义法返回 var strJSON = "{name:'json name'}";  //得到的JSONvar obj = new Function("r ...

  2. Strut2 采用token机制防御CSRF同时也可以防止表单重复提交

    一 未配置Struts2 token的情况下测试 1.从表单提交数据,可以从下图看出,快速点击保存按钮,请求提交了两次 2.检查post提交的数据中未含有token参数 3.查看数据列表,有重复数据 ...

  3. java中jdk环境配置

    配置java环境,俗称jdk环境 首先进入配置环境的目录下:右键鼠标我的电脑->属性->高级系统设置->环境变量,在对应的"系统变量"框下配置一下变量: 规范的配 ...

  4. Jdbc工具类(连接及释放)

    package cn.gdpe.jdbc; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFound ...

  5. sed 简明教程

    做个标记 http://coolshell.cn/articles/9104.html sed全名叫stream editor,流编辑器,用程序的方式来编辑文本,相当的hacker啊.sed基本上就是 ...

  6. OS X Yosemite下安装Hadoop2.5.1伪分布式环境

    最近开始学习Hadoop,一直使用的是公司配好的环境.用了一段时间后发现对Hadoop还是一知半解,故决定动手在本机上安装一个供学习研究使用.正好自己用的是mac,所以没啥说的,直接安装. 总体流程 ...

  7. [开源]jquery-ajax-cache:快速优化页面ajax请求,使用localStorage缓存请求

    项目:jquery-ajax-cache 地址:https://github.com/WQTeam/jquery-ajax-cache     最近在项目中用到了本地缓存localStorage做数据 ...

  8. Python元组、列表、字典

    ```python>>> help(tuple) Help on class tuple in module __builtin__: class tuple(object) │ t ...

  9. adb设备,根据serial获取vid pid

    使用adb devices命令,可以轻松获取到所有连接到PC的adb设备的serial值. 但是adb命令无法获取adb usb设备的vendor id和product id. 本程序根据adb协议, ...

  10. hdu 5135 Little Zu Chongzhi's Triangles

    http://acm.hdu.edu.cn/showproblem.php?pid=5135 题意:给你N个木棍的长度,然后让你组成三角形,问你组成的三角形的和最大是多少? 思路:先求出可以组成的所有 ...