繁体   English   中英

如何实现INamingContainer,告诉我更深入的信息

[英]How to realize INamingContainer,tell me something deeper

如果要实现自定义容器控件,则必须保持控件继承自INamingContainer,该接口被定义为标记接口。据我所知,这将使CLR将控件语句创建为属性之类的元数据。

所以,我想知道:

  1. .net框架系统是否仅为其自身的标记器接口创建了元数据? 我可以创建一个标记界面吗?

  2. 当CLR编译器编译从INamingContainer继承的控件时,会发生什么?

  3. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM