IProvideAttributeTable的唯一任务是提供AttributeTable。AttributeTable包含了定义设计时外表(apperance)和行为(behavior)的元数据(metadata)属性(attribute)。
AttributeTable这个sealed的类并没有定义一个公共的构造函数。而且AttributeTable的内容对外是只读的。那么我们如何能够提供我们的AttributTable呢?
答案是使用AttributeTableBuilder(Design Pattern: Builder Pattern)。AddCustomAttributes()可用来添加新的属性。AddTable()则是将现有的AttributeTable内容全部加入到正在创建的AttributeTable之中。
当所有定义设计时外表和行为的元数据属性加入到AttributeTableBuilder之后,我们通过调用CreateTable()返回一个AttributeTable的实例。