public object Get(Type itemType) { object item; var elementType = itemType.GetCompatibleArrayItemType(); if (elementType != null) { item = GetArray(itemType, elementType); } else if (itemType.IsGenericType && ListTypes.Contains(itemType.GetGenericTypeDefinition())) { item = GetList(itemType); } else { item = _items.Where(itemType.IsInstanceOfType).FirstOrDefault(); if (item == null && _parentScope != null) { item = _parentScope.Get(itemType); } } if (item == null && _clear.Any(itemType.IsAssignableFrom)) { return(Null); } return(item); }
public bool Contains(Type itemType) { if (_clear.Any(itemType.IsAssignableFrom)) { return(true); } var elementType = itemType.GetCompatibleArrayItemType(); if (elementType != null) { itemType = elementType; } else if (itemType.IsGenericType && ListTypes.Contains(itemType.GetGenericTypeDefinition())) { itemType = itemType.GetGenericArguments()[0]; } return(_items.Any(itemType.IsInstanceOfType) || ((_parentScope != null) && _parentScope.Contains(itemType))); }