[英]How to realize INamingContainer,tell me something deeper
如果要实现自定义容器控件,则必须保持控件继承自INamingContainer,该接口被定义为标记接口。据我所知,这将使CLR将控件语句创建为属性之类的元数据。
所以,我想知道:
.net框架系统是否仅为其自身的标记器接口创建了元数据? 我可以创建一个标记界面吗?
当CLR编译器编译从INamingContainer继承的控件时,会发生什么?
INamingContainer用于容器控制的功能是什么?
提前致谢!
任何实现此接口的控件都会创建一个新的名称空间,在该名称空间中,所有子控件ID属性都将保证是唯一的。
ID由asp.net引擎设置,该引擎在构建控件层次结构时检测控件是否具有此属性。 当它遇到具有此属性的子控件时,它将更改其为此子控件的子代创建ID的方式,因此它们都是唯一的。
该接口称为“标记”,因为它没有方法/属性。 asp.net引擎实际上将它用作类的标记。
一个使所有类实现特定属性的方法的示例(从此链接 )
static IEnumerable<Type> GetTypesWithHelpAttribute(Assembly assembly) {
foreach(Type type in assembly.GetTypes()) {
if (type.GetCustomAttributes(typeof(HelpAttribute), true).Length > 0) {
yield return type;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.