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) |