Beispiel #1
0
 /// <summary>
 /// Creates a new instance of <see cref="InstanceUsage{TInstance}"/>.
 /// </summary>
 /// <param name="pool">The <see cref="LocklessInstancePoolForClasses{TInstance}"/>.</param>
 /// <param name="factory">The callback to create a new instance of <typeparamref name="TInstance"/>, if the pool currently does not have instances available.</param>
 /// <exception cref="ArgumentNullException">If either of <paramref name="pool"/> or <paramref name="factory"/> is <c>null</c>.</exception>
 /// <exception cref="ArgumentException">If <paramref name="factory"/> is used and it returns <c>null</c>.</exception>
 public InstanceUsage(
     LocklessInstancePoolForClasses <TInstance> pool,
     Func <TInstance> factory
     )
 {
     this._pool    = ArgumentValidator.ValidateNotNull(nameof(pool), pool);
     this.Instance = (pool.TakeInstance() ?? ArgumentValidator.ValidateNotNull(nameof(factory), factory)()) ?? throw new ArgumentException("instance");
 }
Beispiel #2
0
 /// <summary>
 /// Creates a new instance of <see cref="InstancePoolForContextlessCreation{TInstance}"/>.
 /// </summary>
 /// <param name="pool">The pool to wrap.</param>
 /// <param name="factory">The callback to use to create a new instance of type <typeparamref name="TInstance"/>.</param>
 /// <exception cref="ArgumentNullException">If either or <paramref name="pool"/> or <paramref name="factory"/> is <c>null</c>.</exception>
 public InstancePoolForContextlessCreation(
     LocklessInstancePoolForClasses <TInstance> pool,
     Func <TInstance> factory
     )
 {
     this._pool    = ArgumentValidator.ValidateNotNull(nameof(pool), pool);
     this._factory = ArgumentValidator.ValidateNotNull(nameof(factory), factory);
 }