Ejemplo n.º 1
0
        public override TR ResolveRepository <TR>(TUnitOfWork uow)
        {
            if (!SupportedRepositoryTypes.Contains(typeof(TR)))
            {
                return(null);
            }

            var repository = uow.GetPluginEntry(this) as TRepository;

            if (repository == null)
            {
                repository = CreateRepository();
                uow.SetPluginEntry(this, repository);
            }

            // ReSharper disable once SuspiciousTypeConversion.Global
            // ReSharper disable once PossibleInvalidCastException
            return((TR)(object)repository);
        }
Ejemplo n.º 2
0
        public override TR ResolveRepository <TR>(TUnitOfWork uow)
        {
            if (!SupportedRepositoryTypes.Contains(typeof(TR)))
            {
                return(null);
            }

            var entry = uow.GetPluginEntry(this);

            Debug.Assert(entry != null, "Snapshot reference should be registered on unit of work init.");

            if (entry is ImmutableDictionary <TKey, TEntity> dataSnapshot)
            {
                // ReSharper disable once AssignNullToNotNullAttribute
                entry = CreateRepository(dataSnapshot);
                uow.SetPluginEntry(this, entry);
            }

            // ReSharper disable once SuspiciousTypeConversion.Global
            // ReSharper disable once PossibleInvalidCastException
            return((TR)entry);
        }