The CollectionDataContractAttribute is intended to ease interoperability when working with data from non-Windows Communication Foundation (WCF) services and to control the exact shape of serialized instances. To achieve this, the ItemName property enables you to control the names of the repeating items inside a collection.
The CollectionDataContractAttribute is also intended to be used with dictionary types to handle keyed collections. Dictionary types are classes that implement either the IDictionary or the IDictionary<(Of <(TKey, TValue>)>) interface, for example, the Dictionary<(Of <(TKey, TValue>)>). Use the KeyName and ValueName properties to set custom names when using the Dictionary<(Of <(TKey, TValue>)>) class.