AttributeTable 클래스
디자인 타임 모양 및 동작을 정의하는 메타데이터 특성 테이블입니다.
상속 계층 구조
System.Object
Microsoft.Windows.Design.Metadata.AttributeTable
네임스페이스: Microsoft.Windows.Design.Metadata
어셈블리: Microsoft.Windows.Design.Extensibility(Microsoft.Windows.Design.Extensibility.dll)
구문
‘선언
Public NotInheritable Class AttributeTable
public sealed class AttributeTable
public ref class AttributeTable sealed
[<Sealed>]
type AttributeTable = class end
public final class AttributeTable
AttributeTable 형식에서는 다음과 같은 멤버를 노출합니다.
속성
이름 | 설명 | |
---|---|---|
AttributedTypes | 예를 들어 속성이나 형식 자체에서 특성이 재정의되는 모든 형식의 열거형을 가져옵니다. |
위쪽
메서드
이름 | 설명 | |
---|---|---|
ContainsAttributes | 이 테이블에 지정된 형식에 대한 메타데이터가 있는지 여부를 나타내는 값을 반환합니다. | |
Equals | 지정한 Object가 현재 Object와 같은지 여부를 확인합니다. (Object에서 상속됨) | |
Finalize | 가비지 수집에서 회수하기 전에 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨) | |
GetCustomAttributes(Assembly) | 지정된 어셈블리에 대해 제공되는 모든 특성의 열거형을 반환합니다. | |
GetCustomAttributes(Type) | 지정된 형식에 대해 제공되는 모든 특성의 열거형을 반환합니다. | |
GetCustomAttributes(Type, String) | 지정된 형식 및 멤버 이름에 대해 제공되는 모든 특성의 열거형을 반환합니다. | |
GetHashCode | 특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨) | |
GetType | 현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨) | |
MemberwiseClone | 현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨) | |
ToString | 현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨) |
위쪽
설명
AttributeTable 클래스를 사용하여 디자인 타임 메타데이터 특성을 WPF(Windows Presentation Foundation) 형식에 연결할 수 있습니다.
특성 테이블을 만들려면 AttributeTableBuilder 클래스의 CreateTable 메서드를 호출합니다. 자세한 내용은 디자인 타임 메타데이터 제공을 참조하십시오.
특성 테이블은 기본적으로 읽기 전용 사전이지만 키와 값이 개별적으로 계산됩니다. 특정 형식에 대한 특성이 들어 있는 경우 특성 테이블을 쿼리하는 것이 효율적입니다. 실제 특성 집합은 요청 시 만들어집니다.
예제
다음 코드 예제에서는 특성 테이블을 만들고 값을 채우는 방법을 보여 줍니다. 자세한 내용은 연습: 디자인 타임 표시기 만들기을 참조하십시오.
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
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 IProvideAttributeTable. If found, designers instantiate
' this class and access its AttributeTable property 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()
' 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()
Dim hasCustomAttributes As Boolean = attributes.ContainsAttributes(GetType(Button))
Dim types As IEnumerable(Of Type) = attributes.AttributedTypes
' The following code shows how to retrieve custom attributes
' using the GetCustomAttributes method overloads.
Dim attrs0 As IEnumerable = attributes.GetCustomAttributes(GetType(Button))
Dim attrs1 As IEnumerable = attributes.GetCustomAttributes(GetType(Button), "Background")
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();
// Apply the ReadOnlyAttribute to the Background property
// of the Button class.
builder.AddCustomAttributes(
typeof(Button),
"Background",
new ReadOnlyAttribute(true));
AttributeTable attributes = builder.CreateTable();
bool hasCustomAttributes = attributes.ContainsAttributes(typeof(Button));
IEnumerable<Type> types = attributes.AttributedTypes;
// The following code shows how to retrieve custom attributes
// using the GetCustomAttributes method overloads.
IEnumerable attrs0 = attributes.GetCustomAttributes(typeof(Button));
IEnumerable attrs1 = attributes.GetCustomAttributes(
typeof(Button),
"Background");
return attributes;
}
}
}
}
스레드로부터의 안전성
이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
참고 항목
참조
Microsoft.Windows.Design.Metadata 네임스페이스