技术文档
编程杂记
友情链接
技术文档 >ASP.NET >
用户控件的晋级使用方法(BindingFlags )
2008-8-20 11:13:19 浏览/评论:42/0
在平常的开发中,我们经常会使用到用户控件(.ascx),这个玩意给我带来了不少的方便,但是在使用中页面也会发现一些问题;特别是在.net2.0下。
比如:我们建立一个用户控件:
代码很简单,使用中也不会出什么错,给属性Index赋值也很简单。但是问题就出现在给Index赋值上,
建立一个母模板:
其中添加一个控件:<aspx:Header ID="Header1" runat="server"/>
再建立一个内容页,index.aspx
在该内容页需要对母模办页里的Header1控件的Index属性赋值,到这里很多朋友都人家很简单呀使用下面的代码就可以的:
上面代码在Debug下偶尔不会报错,但发布的时候绝对报错,找不到Controls_Header类型,完蛋了,岂不是不能给用户控件赋值了??
慢慢来:
上面代码也很简单,就不多说了,关键是 InvokeMember 这个方法我们在做反射的时候经常用到,下面b把BindingFlags详细说一下
| 成员名称 | 说明 | |
|---|---|---|
| CreateInstance | 指定“反射”应该创建指定类型的实例。调用与给定参数匹配的构造函数。忽略提供的成员名。如果未指定查找类型,将应用 (Instance |Public)。调用类型初始值设定项是不可能的。 | |
| DeclaredOnly | 指定只应考虑在所提供类型的层次结构级别上声明的成员。不考虑继承成员。 | |
| Default | 不指定绑定标志。 | |
| ExactBinding | 指定提供参数的类型必须与对应形参的类型完全匹配。如果调用方提供一个非空 Binder 对象,则“反射”将引发异常,因为这意味着调用方正在提供的 BindToXXX 实现将选取适当的方法。 “反射”建立通用类型系统的可访问规则模型。例如,如果调用方在相同的程序集内,则它不需要内部成员的特殊权限。否则,调用方需要 ReflectionPermission。这与保护成员、私有成员等成员的查找是一致的。 一般原则是,ChangeType 应只执行永远不会丢失数据的扩展强制。扩展强制的一个例子是将 32 位有符号整数值强制为 64 位有符号整数值。这与窄缩强制不同,后者可能丢失数据。窄缩强制的一个例子是将 64 位有符号整数强制为 32 位有符号整数。 默认联编程序忽略此标志,而自定义联编程序可以实现此标志的语义。 | |
| FlattenHierarchy | 指定应返回层次结构上的公共静态成员和受保护的静态成员。不返回继承类中的私有静态成员。静态成员包括字段、方法、事件和属性。不返回嵌套类型。 | |
| GetField | 指定应返回指定字段的值。 | |
| GetProperty | 指定应返回指定属性的值。 | |
| IgnoreCase | 指定当绑定时不应考虑成员名的大小写。 | |
| IgnoreReturn | 在 COM interop 中用于指定可以忽略成员的返回值。 | |
| Instance | 指定实例成员将包括在搜索中。 | |
| InvokeMethod | 指定要调用一个方法。这可能不是构造函数或类型初始值设定项。 | |
| NonPublic | 指定非公共成员将包括在搜索中。 | |
| OptionalParamBinding | 返回其参数计数与提供参数的数目匹配的成员集。此绑定标志用于所带参数具有默认值的方法和带变量参数 (varargs) 的方法。此标志应只与 Type.InvokeMember 一起使用。 具有默认值的参数仅用在省略尾部参数的调用中。它们必须是最后的参数。 | |
| Public | 指定公共成员将包括在搜索中。 | |
| PutDispProperty | 指定应调用 COM 对象的 PROPPUT 成员。PROPPUT 指定使用值的属性设置函数。如果属性同时具有 PROPPUT 和 PROPPUTREF,而且需要区分调用哪一个,请使用 PutDispProperty。 | |
| PutRefDispProperty | 指定应调用 COM 对象的 PROPPUTREF 成员。PROPPUTREF 指定使用引用而不是值的属性设置函数。如果属性同时具有 PROPPUT 和 PROPPUTREF,而且需要区分调用哪一个,请使用 PutRefDispProperty。 | |
| SetField | 指定应设置指定字段的值。 | |
| SetProperty | 指定应设置指定属性的值。对于 COM 属性,指定此绑定标志与指定 PutDispProperty 和 PutRefDispProperty 是等效的。 | |
| Static | 指定静态成员将包括在搜索中。 | |
| SuppressChangeType | 未实现。 |