|
@@ -67,6 +67,9 @@ namespace Google.Protobuf.Collections
|
|
/// </para>
|
|
/// </para>
|
|
/// </remarks>
|
|
/// </remarks>
|
|
public sealed class MapField<TKey, TValue> : IDeepCloneable<MapField<TKey, TValue>>, IDictionary<TKey, TValue>, IEquatable<MapField<TKey, TValue>>, IDictionary
|
|
public sealed class MapField<TKey, TValue> : IDeepCloneable<MapField<TKey, TValue>>, IDictionary<TKey, TValue>, IEquatable<MapField<TKey, TValue>>, IDictionary
|
|
|
|
+#if !NET35
|
|
|
|
+ , IReadOnlyDictionary<TKey, TValue>
|
|
|
|
+#endif
|
|
{
|
|
{
|
|
// TODO: Don't create the map/list until we have an entry. (Assume many maps will be empty.)
|
|
// TODO: Don't create the map/list until we have an entry. (Assume many maps will be empty.)
|
|
private readonly Dictionary<TKey, LinkedListNode<KeyValuePair<TKey, TValue>>> map =
|
|
private readonly Dictionary<TKey, LinkedListNode<KeyValuePair<TKey, TValue>>> map =
|
|
@@ -548,6 +551,14 @@ namespace Google.Protobuf.Collections
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
+ #region IReadOnlyDictionary explicit interface implementation
|
|
|
|
+#if !NET35
|
|
|
|
+ IEnumerable<TKey> IReadOnlyDictionary<TKey, TValue>.Keys => Keys;
|
|
|
|
+
|
|
|
|
+ IEnumerable<TValue> IReadOnlyDictionary<TKey, TValue>.Values => Values;
|
|
|
|
+#endif
|
|
|
|
+ #endregion
|
|
|
|
+
|
|
private class DictionaryEnumerator : IDictionaryEnumerator
|
|
private class DictionaryEnumerator : IDictionaryEnumerator
|
|
{
|
|
{
|
|
private readonly IEnumerator<KeyValuePair<TKey, TValue>> enumerator;
|
|
private readonly IEnumerator<KeyValuePair<TKey, TValue>> enumerator;
|