/// <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)); }