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


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)

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

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