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