/// <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)));
        }
Beispiel #2
0
 /// <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));
 }