36 lines
1.0 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|
|
|