CollectionDataContractAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při použití na typ kolekce povolí vlastní specifikaci prvků položky kolekce. Tento atribut lze použít pouze u typů, které jsou rozpoznány DataContractSerializer jako platné serializovatelné kolekce.
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
- Dědičnost
- Atributy
Příklady
Následující příklad se vztahuje na CollectionDataContractAttribute třídu, která dědí z List<T> třídy. Kód nastaví Name a ItemName vlastnosti na vlastní hodnoty.
[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
Když nástroj ServiceModel Metadata Utility (Svcutil.exe) slouží k vygenerování kódu pro klienta, kód se podobá následujícímu příkladu. Všimněte si, že název třídy je změněn, stejně jako ItemName. Při použití obecných typů se název parametru typu použije k vytvoření výsledného názvu typu.
// 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
Poznámky
Účelem CollectionDataContractAttribute je usnadnit interoperabilitu při práci s daty od jiných poskytovatelů než WCF a řídit přesný tvar serializovaných instancí. K tomuto účelu ItemName umožňuje tato vlastnost řídit názvy opakujících se položek v kolekci. To je zvlášť užitečné, když zprostředkovatel nepoužívá název typu elementu XML jako název položky pole, například pokud zprostředkovatel používá "String" jako název typu elementu místo názvu typu XSD "string".
Je CollectionDataContractAttribute také určen k použití se slovníkovými typy pro zpracování kolekcí s klíči. Typy slovníku jsou třídy, které implementují buď rozhraní IDictionaryIDictionary<TKey,TValue> , nebo rozhraní, Dictionary<TKey,TValue>například . KeyName Pomocí vlastností můžete ValueName nastavit vlastní názvy při použití Dictionary<TKey,TValue> třídy.
Další informace o použití naleznete DataContractSerializerv tématu Použití kontraktů dat.
Konstruktory
| Name | Description |
|---|---|
| CollectionDataContractAttribute() |
Inicializuje novou instanci CollectionDataContractAttribute třídy. |
Vlastnosti
| Name | Description |
|---|---|
| IsItemNameSetExplicitly |
Získá, zda ItemName byl explicitně nastaven. |
| IsKeyNameSetExplicitly |
Získá, zda KeyName byl explicitně nastaven. |
| IsNameSetExplicitly |
Získá, zda Name byl explicitně nastaven. |
| IsNamespaceSetExplicitly |
Získá, zda Namespace byl explicitně nastaven. |
| IsReference |
Získá nebo nastaví hodnotu, která určuje, zda zachovat odkazová data objektu. |
| IsReferenceSetExplicitly |
Získá, zda odkaz byl explicitně nastaven. |
| IsValueNameSetExplicitly |
Získá, zda ValueName byl explicitně nastaven. |
| ItemName |
Získá nebo nastaví vlastní název pro element kolekce. |
| KeyName |
Získá nebo nastaví vlastní název pro název klíče slovníku. |
| Name |
Získá nebo nastaví název datového kontraktu pro typ kolekce. |
| Namespace |
Získá nebo nastaví obor názvů pro kontrakt dat. |
| TypeId |
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute. (Zděděno od Attribute) |
| ValueName |
Získá nebo nastaví vlastní název pro název hodnoty slovníku. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
| GetHashCode() |
Vrátí kód hash pro tuto instanci. (Zděděno od Attribute) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| IsDefaultAttribute() |
Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu. (Zděděno od Attribute) |
| Match(Object) |
Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní. (Zděděno od Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od Attribute) |