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


CollectionDataContractAttribute Класс

Определение

При применении к типу коллекции включает настраиваемую спецификацию элементов элемента коллекции. Этот атрибут можно применять только к типам, которые распознаются DataContractSerializer как допустимые, сериализуемые коллекции.

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

Примеры

В следующем примере применяется CollectionDataContractAttribute класс, наследующий от List<T> класса. Код задает настраиваемые Name значения и ItemName свойства.

[CollectionDataContract(Name = "Custom{0}List", ItemName = "CustomItem")]
public class CustomList<T> : List<T>
{
    public CustomList()
        : base()
    {
    }

    public CustomList(T[] items)
        : base()
    {
        foreach (T item in items)
        {
            Add(item);
        }
    }
}
<CollectionDataContract(Name := "Custom{0}List", ItemName := "CustomItem")> _
Public Class CustomList(Of T)
    Inherits List(Of T)
    Public Sub New()
        MyBase.New()
    End Sub

    Public Sub New(ByVal items() As T)
        MyBase.New()
        For Each item As T In items
            Add(item)
        Next item
    End Sub
End Class

Если средство служебной программы метаданных ServiceModel (Svcutil.exe) используется для создания кода для клиента, код похож на следующий пример. Обратите внимание, что имя класса изменено, а также ItemNameимя класса. При использовании универсальных шаблонов имя параметра типа используется для создания результирующего имени типа.

// This is the generated code. Note that the class is renamed to "CustomBookList",
// and the ItemName is set to "CustomItem".
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.CollectionDataContractAttribute(ItemName = "CustomItem")]
public class CustomBookList : System.Collections.Generic.List<Microsoft.Security.Samples.Book>
{
}
' This is the generated code. Note that the class is renamed to "CustomBookList", 
' and the ItemName is set to "CustomItem".
<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0"), System.Runtime.Serialization.CollectionDataContractAttribute(ItemName := "CustomItem")> _
Public Class CustomBookList
    Inherits System.Collections.Generic.List(Of Microsoft.Security.Samples.Book)
End Class

Комментарии

Он CollectionDataContractAttribute предназначен для упрощения взаимодействия при работе с данными из поставщиков, отличных от WCF, и для управления точной формой сериализованных экземпляров. В этом случае ItemName свойство позволяет управлять именами повторяющихся элементов в коллекции. Это особенно полезно, если поставщик не использует имя типа XML-элемента в качестве имени элемента массива, например, если поставщик использует "String" в качестве имени типа элемента вместо имени типа XSD "string".

Он CollectionDataContractAttribute также предназначен для использования с типами словарей для обработки ключей коллекций. Типы словарей — это классы, реализующие интерфейс IDictionary или IDictionary<TKey,TValue> интерфейс, Dictionary<TKey,TValue>например. KeyName ValueName Используйте свойства для задания пользовательских имен при использовании Dictionary<TKey,TValue> класса.

Дополнительные сведения об использовании DataContractSerializerсм. в разделе "Использование контрактов данных".

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

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

Инициализирует новый экземпляр класса CollectionDataContractAttribute.

Свойства

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

Возвращает значение, указывалось ли ItemName явно задано.

IsKeyNameSetExplicitly

Возвращает значение, указывалось ли KeyName явно задано.

IsNameSetExplicitly

Возвращает значение, указывалось ли Name явно задано.

IsNamespaceSetExplicitly

Возвращает значение, указывалось ли Namespace явно задано.

IsReference

Возвращает или задает значение, указывающее, следует ли сохранять данные ссылки на объект.

IsReferenceSetExplicitly

Возвращает, была ли ссылка явно задана.

IsValueNameSetExplicitly

Возвращает значение, указывалось ли ValueName явно задано.

ItemName

Возвращает или задает настраиваемое имя элемента коллекции.

KeyName

Возвращает или задает настраиваемое имя для имени ключа словаря.

Name

Возвращает или задает имя контракта данных для типа коллекции.

Namespace

Возвращает или задает пространство имен для контракта данных.

TypeId

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

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

Возвращает или задает настраиваемое имя для имени значения словаря.

Методы

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

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

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

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

(Унаследовано от Attribute)
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)

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

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