Files
ResourceString.Net.Contract/ResourceString.Net.Contract/FormattedResourceString.cs
2023-05-20 15:25:01 +02:00

36 lines
1.0 KiB
C#

using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace ResourceString.Net.Contract
{
public class FormattedResourceString : IResourceString
{
public IResourceString Format { get; }
public IEnumerable<IResourceString> Parameters { get; }
public string Value => GetValue(CultureInfo.CurrentCulture);
public FormattedResourceString(
IResourceString format,
params IResourceString[] parameters)
{
Format = format ?? new JoinedResourceString(
LiteralString.Factory(","),
parameters.Select(((p, idx) => LiteralString.Factory("{" + idx + "}"))).ToArray()
);
Parameters = parameters;
}
public string GetValue(CultureInfo cultureInfo)
{
var format = Format.GetValue(cultureInfo);
var parameterStrings = Parameters.Select(p => p.GetValue(cultureInfo));
return string.Format(format, parameterStrings.ToArray());
}
}
}