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


TypeConverterAttribute Класс

Определение

Указывает, какой тип использовать в качестве преобразователя для объекта, с которым связан этот атрибут.

public ref class TypeConverterAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.All)]
public sealed class TypeConverterAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.All)>]
type TypeConverterAttribute = class
    inherit Attribute
Public NotInheritable Class TypeConverterAttribute
Inherits Attribute
Наследование
TypeConverterAttribute
Атрибуты

Примеры

В следующем примере объявляется MyClass использование преобразователя MyClassConverterтипов. В этом примере предполагается, что MyClassConverter он реализован в другом месте. Класс, реализуя преобразователь (MyClassConverter), должен наследоваться от TypeConverter класса.

[TypeConverter(Class1::MyClassConverter::typeid)]
ref class MyClass{
   // Insert code here.
};
[TypeConverter(typeof(MyClassConverter))]
public class MyClass
{
    // Insert code here.
}
<TypeConverter(GetType(MyClassConverter))> _
Public Class ClassA
    ' Insert code here.
End Class

В следующем примере создается экземпляр MyClass. Затем он получает атрибуты для класса и выводит имя преобразователя типов, используемого MyClass.

int main()
{
   // Creates a new instance of MyClass.
   Class1::MyClass^ myNewClass = gcnew Class1::MyClass;

   // Gets the attributes for the instance.
   AttributeCollection^ attributes = TypeDescriptor::GetAttributes( myNewClass );

   /* Prints the name of the type converter by retrieving the 
        * TypeConverterAttribute from the AttributeCollection. */
   TypeConverterAttribute^ myAttribute = dynamic_cast<TypeConverterAttribute^>(attributes[ TypeConverterAttribute::typeid ]);
   Console::WriteLine( "The type converter for this class is: {0}", myAttribute->ConverterTypeName );
   return 0;
}
public static int Main()
{
    // Creates a new instance of MyClass.
    MyClass myNewClass = new();

    // Gets the attributes for the instance.
    AttributeCollection attributes = TypeDescriptor.GetAttributes(myNewClass);

    /* Prints the name of the type converter by retrieving the 
     * TypeConverterAttribute from the AttributeCollection. */
    TypeConverterAttribute myAttribute =
        (TypeConverterAttribute)attributes[typeof(TypeConverterAttribute)];

    Console.WriteLine("The type conveter for this class is: " +
        myAttribute.ConverterTypeName);

    return 0;
}
Public Shared Function Main() As Integer
    ' Creates a new instance of ClassA.
    Dim myNewClass As New ClassA()
    
    ' Gets the attributes for the instance.
    Dim attributes As AttributeCollection = TypeDescriptor.GetAttributes(myNewClass)
    
    ' Prints the name of the type converter by retrieving the
    ' TypeConverterAttribute from the AttributeCollection. 
    Dim myAttribute As TypeConverterAttribute = _
        CType(attributes(GetType(TypeConverterAttribute)), TypeConverterAttribute)
    
    Console.WriteLine(("The type conveter for this class is: " _
        + myAttribute.ConverterTypeName))
    Return 0
End Function 'Main

Комментарии

Класс, используемый для преобразования, должен наследоваться от TypeConverter. ConverterTypeName Используйте свойство, чтобы получить имя класса, который предоставляет преобразование данных для объекта, к которому привязан этот атрибут.

Дополнительные сведения об атрибутах см. в разделе "Атрибуты". Дополнительные сведения о преобразователях типов см. в базовом TypeConverter классе и инструкции. Реализация преобразователя типов.

Чтобы установить преобразователь типов для пользовательского класса, который обеспечивает поведение преобразования типов для XAML, атрибут применяется к типу TypeConverterAttribute . Аргумент атрибута ссылается на реализацию преобразователя типов. Преобразователь типов должен иметь возможность принимать значения из строки, используемой для атрибутов или текста инициализации в разметке XAML, и преобразовать эту строку в предполагаемый тип назначения. Дополнительные сведения см. в разделе TypeConverters и XAML.

Вместо применения ко всем значениям типа можно также установить поведение преобразователя типов для XAML для определенного свойства. В этом случае применяется TypeConverterAttribute к определению свойства (внешнему определению, а не к конкретным get и set определениям).

Поведение преобразователя типов для использования пользовательского присоединенного члена XAML можно назначить, применяя TypeConverterAttribute к методу get доступа, поддерживающему использование XAML. Дополнительные сведения см. в разделе "Общие сведения о присоединенных свойствах".

Для сложных случаев сериализации XAML, требующих дополнительного состояния из среды выполнения объекта, рассмотрите возможность определения сериализатора значений в дополнение к преобразователю типов и атрибутам как для пользовательских типов, так и для пользовательских элементов. Дополнительные сведения см. в разделе ValueSerializer.

Конструкторы

Имя Описание
TypeConverterAttribute()

Инициализирует новый экземпляр TypeConverterAttribute класса с преобразователем типов по умолчанию, который является пустой строкой ("").

TypeConverterAttribute(String)

Инициализирует новый экземпляр TypeConverterAttribute класса, используя указанное имя типа в качестве преобразователя данных для объекта, с которым привязан этот атрибут.

TypeConverterAttribute(Type)

Инициализирует новый экземпляр TypeConverterAttribute класса, используя указанный тип в качестве преобразователя данных для объекта, с которым привязан этот атрибут.

Поля

Имя Описание
Default

Указывает тип, используемый в качестве преобразователя для объекта, с которым привязан этот атрибут.

Свойства

Имя Описание
ConverterTypeName

Возвращает полное имя типа, используемого Type в качестве преобразователя для объекта, к которым привязан этот атрибут.

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, равное ли заданному объекту текущее TypeConverterAttributeзначение.

GetHashCode()

Возвращает хэш-код для этого экземпляра.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

Применяется к

См. также раздел