|
7 | 7 | namespace IGLib |
8 | 8 | { |
9 | 9 |
|
10 | | - /// <summary>Provides the default format provider (object of type <see cref="IFormatProvider"/>) |
11 | | - /// for cases where the format provider is not explicitly specified; e.g., in methods where |
12 | | - /// <see cref="IFormatProvider"/> is a parameter, but is not provided by the caller (parameter |
13 | | - /// is set to null).</summary> |
14 | | - /// <remarks><para>Usage example:</para> |
15 | | - /// <remarks>In constructors or methods that have <see cref="IFormatProvider"/> as parameter, also |
16 | | - /// provide <see cref="IDefaultFormatProviderSelector?"/> as parameter, and default it to null. |
17 | | - /// Then, within the constructor, check if fhe format provider parameter is null, and if yes, |
18 | | - /// set it to what the default format provider selector's |
19 | | - /// <see cref="DefaulltFormatProvider"/> returns. In applications, you can arrange for specific |
20 | | - /// <see cref="IDefaultFormatProviderSelector"/> to be injected in all such constructors.</remarks> |
21 | | - /// </remarks> |
22 | | - public interface IDefaultFormatProviderSelector |
| 10 | + public class DefaultFormatProviderSelector |
23 | 11 | { |
24 | 12 |
|
25 | | - IFormatProvider DefaulltFormatProvider { get; } |
| 13 | + /// <summary>Returns the global <see cref="IDefaultFormatProviderSelector"/> that is used to provide |
| 14 | + /// the <see cref="IFormatProvider"/> when one is not specified, and also the the |
| 15 | + /// <see cref="IDefaultFormatProviderSelector"/> is not specified.</summary> |
| 16 | + public static IDefaultFormatProviderSelector Global { get; private set; } = |
26 | 17 |
|
27 | | - } |
| 18 | + public static IFormatProvider GetFormatProvider(IFormatProvider? specifiedProvider, |
| 19 | + IDefaultFormatProviderSelector? selector) |
| 20 | + { |
| 21 | + return (specifiedProvider ?? (selector?? Global).DefaultFormatProvider); |
| 22 | + } |
28 | 23 |
|
| 24 | + } |
29 | 25 |
|
30 | 26 | } |
0 commit comments