/
ObjectPoolProviderExtensions.cs
44 lines (39 loc) · 1.79 KB
/
ObjectPoolProviderExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Text;
namespace Microsoft.Extensions.ObjectPool;
/// <summary>
/// Extension methods for <see cref="ObjectPoolProvider"/>.
/// </summary>
public static class ObjectPoolProviderExtensions
{
/// <summary>
/// Creates an <see cref="ObjectPool{T}"/> that pools <see cref="StringBuilder"/> instances.
/// </summary>
/// <param name="provider">The <see cref="ObjectPoolProvider"/>.</param>
/// <returns>The <see cref="ObjectPool{T}"/>.</returns>
public static ObjectPool<StringBuilder> CreateStringBuilderPool(this ObjectPoolProvider provider)
{
return provider.Create<StringBuilder>(new StringBuilderPooledObjectPolicy());
}
/// <summary>
/// Creates an <see cref="ObjectPool{T}"/> that pools <see cref="StringBuilder"/> instances.
/// </summary>
/// <param name="provider">The <see cref="ObjectPoolProvider"/>.</param>
/// <param name="initialCapacity">The initial capacity to initialize <see cref="StringBuilder"/> instances with.</param>
/// <param name="maximumRetainedCapacity">The maximum value for <see cref="StringBuilder.Capacity"/> that is allowed to be
/// retained, when an instance is returned.</param>
/// <returns>The <see cref="ObjectPool{T}"/>.</returns>
public static ObjectPool<StringBuilder> CreateStringBuilderPool(
this ObjectPoolProvider provider,
int initialCapacity,
int maximumRetainedCapacity)
{
var policy = new StringBuilderPooledObjectPolicy()
{
InitialCapacity = initialCapacity,
MaximumRetainedCapacity = maximumRetainedCapacity,
};
return provider.Create<StringBuilder>(policy);
}
}