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 класс, наследующий от 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) |