AttributeTableBuilder 类

创建定义设计时元数据的特性表。

继承层次结构

System.Object
  Microsoft.Windows.Design.Metadata.AttributeTableBuilder

命名空间:  Microsoft.Windows.Design.Metadata
程序集:  Microsoft.Windows.Design.Extensibility(在 Microsoft.Windows.Design.Extensibility.dll 中)

语法

声明
Public Class AttributeTableBuilder
public class AttributeTableBuilder
public ref class AttributeTableBuilder
type AttributeTableBuilder =  class end
public class AttributeTableBuilder

AttributeTableBuilder 类型公开以下成员。

构造函数

  名称 说明
公共方法 AttributeTableBuilder 初始化 AttributeTableBuilder 类的新实例。

页首

方法

  名称 说明
公共方法 AddCallback 添加一个在需要指定类型的元数据时调用的回调。
公共方法 AddCustomAttributes(Assembly, array<Attribute[]) 将提供的特性数组的内容添加到表生成器。
公共方法 AddCustomAttributes(Type, array<Attribute[]) 将提供的特性的内容添加到表生成器。
公共方法 AddCustomAttributes(Type, String, array<Attribute[]) 将特性添加到具有指定名称的成员。
公共方法 AddTable 将提供的特性表的内容添加到表生成器。
公共方法 CreateTable 创建一个包含通过 AddCustomAttributes 调用提供的所有特性定义的特性表。
公共方法 Equals 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)
公共方法 ValidateTable 此方法用于验证所创建的特性表是否包含有效的特性信息。

页首

备注

若要创建特性表,需要先创建 AttributeTableBuilder 类的一个实例。 通过调用 AddCustomAttributes 重载将元数据添加到特性表生成器中。 添加完元数据后,通过调用 CreateTable 方法从特性表生成器中生成一个特性表。 特性表生成器方法支持回调委托,因此可将特性表的创建一直推迟到需要时。

如果要添加多个特性,请使用 AttributeCallbackBuilder 类,而不要使用 AttributeTableBuilder 类。 此方法将特性的创建推迟至设计器请求目标类型的元数据时。

示例

下面的代码示例演示如何使用 AttributeTableBuilder 类创建和填充特性表。 有关更多信息,请参见 演练:创建设计时装饰器

Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Reflection
Imports System.Text
Imports System.Windows.Media
Imports System.Windows.Controls
Imports System.Windows

Imports Microsoft.Windows.Design.Features
Imports Microsoft.Windows.Design.Metadata

' The ProvideMetadata assembly-level attribute indicates to designers
' that this assembly contains a class that provides an attribute table. 
<Assembly: ProvideMetadata(GetType(CustomControlLibrary.VisualStudio.Design.Metadata))> 

' Container for any general design-time metadata to initialize.
' Designers look for a type in the design-time assembly that 
' implements IRegisterMetadata. If found, designers instantiate 
' this class and call its Register() method automatically.
Friend Class Metadata
    Implements IProvideAttributeTable

    ' Accessed by the designer to register any design-time metadata.
    Public ReadOnly Property AttributeTable() As AttributeTable _
        Implements IProvideAttributeTable.AttributeTable
        Get
            Dim builder As New AttributeTableBuilder()

            builder.AddCustomAttributes( _
                GetType(Button), _
                New DefaultPropertyAttribute("Content"))

            ' Apply the ReadOnlyAttribute to the Background property 
            ' of the Button class.
            builder.AddCustomAttributes( _
                GetType(Button), _
                "Background", _
                New ReadOnlyAttribute(True))

            Dim attributes As AttributeTable = builder.CreateTable()

            Return attributes
        End Get
    End Property

End Class
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Text;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows;

using Microsoft.Windows.Design.Features;
using Microsoft.Windows.Design.Metadata;

// The ProvideMetadata assembly-level attribute indicates to designers
// that this assembly contains a class that provides an attribute table. 
[assembly: ProvideMetadata(typeof(CustomControlLibrary.VisualStudio.Design.Metadata))]
namespace CustomControlLibrary.VisualStudio.Design
{
    // Container for any general design-time metadata to initialize.
    // Designers look for a type in the design-time assembly that 
    // implements IProvideAttributeTable. If found, designers instantiate 
    // this class and access its AttributeTable property automatically.
    internal class Metadata : IProvideAttributeTable
    {
        // Accessed by the designer to register any design-time metadata.
        public AttributeTable AttributeTable
        {
            get 
            {
                AttributeTableBuilder builder = new AttributeTableBuilder();

                builder.AddCustomAttributes(
                    typeof(Button),
                    new DefaultPropertyAttribute("Content"));

                // Apply the ReadOnlyAttribute to the Background property 
                // of the Button class.
                builder.AddCustomAttributes(
                    typeof(Button),
                    "Background",
                    new ReadOnlyAttribute(true));

                AttributeTable attributes = builder.CreateTable();

                return attributes;
            }
        }
    }
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.Windows.Design.Metadata 命名空间

AttributeTable

AttributeCallbackBuilder