Поделиться через


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 (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

Microsoft.Windows.Design.Metadata - пространство имен

AttributeTable

AttributeCallbackBuilder