Minor RVD and EndpointMetadataCollection refactors (#708)

This commit is contained in:
James Newton-King 2018-08-22 10:30:25 +12:00 committed by GitHub
parent 967afc3b0f
commit 4f33362ab5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 27 deletions

View File

@ -112,8 +112,7 @@ namespace Microsoft.AspNetCore.Routing
var items = new List<T>(); var items = new List<T>();
for (var i = 0; i < _items.Length; i++) for (var i = 0; i < _items.Length; i++)
{ {
var item = _items[i] as T; if (_items[i] is T item)
if (item != null)
{ {
items.Add(item); items.Add(item);
} }
@ -150,19 +149,18 @@ namespace Microsoft.AspNetCore.Routing
// Intentionally not readonly to prevent defensive struct copies // Intentionally not readonly to prevent defensive struct copies
private object[] _items; private object[] _items;
private int _index; private int _index;
private object _current;
internal Enumerator(EndpointMetadataCollection collection) internal Enumerator(EndpointMetadataCollection collection)
{ {
_items = collection._items; _items = collection._items;
_index = 0; _index = 0;
_current = null; Current = null;
} }
/// <summary> /// <summary>
/// Gets the element at the current position of the enumerator /// Gets the element at the current position of the enumerator
/// </summary> /// </summary>
public object Current => _current; public object Current { get; private set; }
/// <summary> /// <summary>
/// Releases all resources used by the <see cref="Enumerator"/>. /// Releases all resources used by the <see cref="Enumerator"/>.
@ -182,11 +180,11 @@ namespace Microsoft.AspNetCore.Routing
{ {
if (_index < _items.Length) if (_index < _items.Length)
{ {
_current = _items[_index++]; Current = _items[_index++];
return true; return true;
} }
_current = null; Current = null;
return false; return false;
} }
@ -196,7 +194,7 @@ namespace Microsoft.AspNetCore.Routing
public void Reset() public void Reset()
{ {
_index = 0; _index = 0;
_current = null; Current = null;
} }
} }
} }

View File

@ -222,13 +222,7 @@ namespace Microsoft.AspNetCore.Routing
} }
} }
IEnumerable<string> IReadOnlyDictionary<string, object>.Keys IEnumerable<string> IReadOnlyDictionary<string, object>.Keys => Keys;
{
get
{
return Keys;
}
}
/// <inheritdoc /> /// <inheritdoc />
public ICollection<object> Values public ICollection<object> Values
@ -248,13 +242,7 @@ namespace Microsoft.AspNetCore.Routing
} }
} }
IEnumerable<object> IReadOnlyDictionary<string, object>.Values IEnumerable<object> IReadOnlyDictionary<string, object>.Values => Values;
{
get
{
return Values;
}
}
/// <inheritdoc /> /// <inheritdoc />
void ICollection<KeyValuePair<string, object>>.Add(KeyValuePair<string, object> item) void ICollection<KeyValuePair<string, object>>.Add(KeyValuePair<string, object> item)
@ -565,7 +553,7 @@ namespace Microsoft.AspNetCore.Routing
internal class PropertyStorage internal class PropertyStorage
{ {
private static readonly PropertyCache _propertyCache = new PropertyCache(); private static readonly ConcurrentDictionary<Type, PropertyHelper[]> _propertyCache = new ConcurrentDictionary<Type, PropertyHelper[]>();
public readonly object Value; public readonly object Value;
public readonly PropertyHelper[] Properties; public readonly PropertyHelper[] Properties;
@ -606,9 +594,5 @@ namespace Microsoft.AspNetCore.Routing
} }
} }
} }
private class PropertyCache : ConcurrentDictionary<Type, PropertyHelper[]>
{
}
} }
} }