Пример #1
0
        public static TypedMessageFormat Define <M>(string template, params Expression <Func <M, object> >[] Selectors)
        {
            var result = template;

            Selectors.Mapi((i, selector)
                           => result = result.Replace($"@p{i + 1}", $"@{selector.GetValueMemberName()}"));
            var format = new TypedMessageFormat(typeof(M), result);

            _Formats.TryAdd(typeof(M), format);
            return(format);
        }
Пример #2
0
        static string format <M>(M message, TypedMessageFormat template)
        {
            if (message == null)
            {
                return("null");
            }

            if (template.IsDefault)
            {
                return(message.ToString());
            }

            var output = template.FormatString;

            foreach (var argValue in propertyValues(message))
            {
                var search  = $"@{argValue.Name}";
                var replace = formatValue(argValue.Value);
                output = output.Replace(search, replace);
            }

            return(output);
        }