Exemplo n.º 1
0
        /// <summary>
        /// Returns an <see cref="IDataGetter{TEntity}"/> for getting that entity in cached context.
        /// </summary>
        public IDataGetter <TEntity> Get <TEntity>() where TEntity : class, new()
        {
            var type = RUtils <TEntity> .Type;

            object getter;

            if (_getters.TryGetValue(type, out getter))
            {
                return((IDataGetter <TEntity>)getter);
            }

            var dataGetter = _factory.GetterFor <TEntity>();

            if (!_getters.TryAdd(type, dataGetter))
            {
                return((IDataGetter <TEntity>)_getters[type]);
            }

            return(dataGetter);
        }
 /// <summary>
 /// Instantinate an <see cref="IDataGetter{TEntity}"/>, that will be used in cached context.
 /// This method will be called one time for each <typeparamref name="TEntity"/> requested in each data manager.
 /// </summary>
 public IDataGetter <TEntity> GetterFor <TEntity>() where TEntity : class, new()
 {
     return(new LazyDataGetter <TEntity>(_factory.GetterFor <TEntity>(), this));
 }