/// <summary> /// Creates a new instance. /// </summary> /// <param name="keyProvider">Required. A function to return the value of the entity's primary key.</param> /// <param name="keyBinder">The binder of the entity's id.</param> /// <param name="items">Required. The list of entities to pre-populate the current instance with.</param> /// <param name="mapper">Object mapper manager instance</param> public InMemoryRepository( IKeyProvider <TEntity, TKey> keyProvider, IKeyBinder <TEntity, TKey> keyBinder, IEnumerable <TEntity> items, ObjectMapperManager mapper) { Guard.ArgumentNotNull(keyProvider, nameof(keyProvider)); Guard.ArgumentNotNull(keyBinder, nameof(keyBinder)); Guard.ArgumentNotNull(items, nameof(items)); Guard.ArgumentNotNull(mapper, nameof(mapper)); _keyProvider = keyProvider; _keyBinder = keyBinder; _mapper = mapper; _items = new ConcurrentDictionary <TKey, TEntity>( items.Select(i => new KeyValuePair <TKey, TEntity>(_keyBinder.Get(i), i))); }
/// <summary> /// Gets the key for a given entity. /// </summary> public TKey GetKey(TEntity entity) { return(_keyBinder.Get(entity)); }
/// <summary> /// Gets the key of the entity. /// </summary> TKey IKeyProvider <TEntity, TKey> .GetKey(TEntity entity) { return(_binder.Get(entity)); }