Skip to content

Commit 628533c

Browse files
committed
Properly implemented DefaultFormatProvider.cs
1 parent 4d875a6 commit 628533c

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

src/IGLib.Core/Console/Validation/DefaultFormatProvider/DefaultFormatProvider.cs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,20 @@
77
namespace IGLib
88
{
99

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
2311
{
2412

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; } =
2617

27-
}
18+
public static IFormatProvider GetFormatProvider(IFormatProvider? specifiedProvider,
19+
IDefaultFormatProviderSelector? selector)
20+
{
21+
return (specifiedProvider ?? (selector?? Global).DefaultFormatProvider);
22+
}
2823

24+
}
2925

3026
}

0 commit comments

Comments
 (0)