/// <summary> /// Construct a new <see cref="CachingEntityMemberRequestFactory"/>. /// </summary> /// <param name="factory"> /// The inner <see cref="IEntityMemberRequestFactory"/> whose results are cached. /// This cannot be null. /// </param> /// <exception cref="ArgumentNullException"> /// No argument can be null. /// </exception> public CachingEntityMemberRequestFactory(IEntityMemberRequestFactory factory) { if (factory == null) { throw new ArgumentNullException("factory"); } Factory = factory; Cache = CacheFactory.CreateSimpleCache <long, EntityMemberRequest>("Entity Member Request"); _cacheInvalidator = new EntityMemberRequestCacheInvalidator(Cache); CacheInvalidator = _cacheInvalidator; }
/// <summary> /// Create a new <see cref="SecuresFlagEntityAccessControlChecker"/> using /// the given <paramref name="checker"/>. /// </summary> /// <param name="checker"> /// The <see cref="IEntityAccessControlChecker"/> that checks access /// to specific entities. This cannot be null. /// </param> /// <param name="entityMemberRequestFactory"> /// The <see cref="IEntityMemberRequestFactory"/> that generates entity member requests /// to determine which related entities to check security on. This cannot be null. /// </param> /// <param name="typeRepository"> /// A <see cref="IEntityTypeRepository"/>. This cannot be null. /// </param> /// <exception cref="ArgumentNullException"> /// No argument can be null. /// </exception> internal SecuresFlagEntityAccessControlChecker(IEntityAccessControlChecker checker, IEntityMemberRequestFactory entityMemberRequestFactory, IEntityTypeRepository typeRepository) { if (checker == null) { throw new ArgumentNullException(nameof(checker)); } if (typeRepository == null) { throw new ArgumentNullException(nameof(typeRepository)); } if (entityMemberRequestFactory == null) { throw new ArgumentNullException(nameof(entityMemberRequestFactory)); } Checker = checker; TypeRepository = typeRepository; EntityMemberRequestFactory = entityMemberRequestFactory; }