Conversation
| public class ObjectPrinterTests | ||
| { |
There was a problem hiding this comment.
Не увидел, хотя бы одного теста на то а как в целом организована структура сереализированного объекта, например вот такая строка подойдет под условия первого теста
Name = AlexAge = 19Height = 190,5 и т.д
There was a problem hiding this comment.
Добавил тест проверяющий отступы/новые линии на первых нескольких свойствах
| private bool TryProcessDictionary(object? obj, Type type, string indentation, | ||
| int nestingLevel, out string? result) |
There was a problem hiding this comment.
Зачем тут ответы превращаем в строку, кажется эффективней было бы StringBuilder отдавать
There was a problem hiding this comment.
Ну вообще на выходе из метода там где он вернет true мы все равно каждый раз будем вызывать sb.ToString(), но касательно конкатенации строк да, согласен, так будет эффективнее
There was a problem hiding this comment.
Поправил, теперь создаю единственный экземпляр StringBuilder'а в PrintToString, и переиспользую его в каждом методе. Избавился от out параметров таким образом
|
|
||
| namespace ObjectPrinting.Solved | ||
| namespace ObjectPrinting.Solved; | ||
|
|
There was a problem hiding this comment.
У тебя сейчас конфиг отвечает за подготовку конфиги, и за то как его потом пременять, давай разведем эту штуку на два разных класса
There was a problem hiding this comment.
Поправил, разделил на 3 класса - на модель настроек, на конфигуратор с публичными методами и на принтер, который отвечает за сбор всех объектов и их печать
| public PrintingConfig<TOwner> Using(CultureInfo culture) | ||
| { | ||
| PrintingConfig<TOwner> ParentConfig { get; } | ||
| if (memberInfo == null) | ||
| printingConfig.AddTypeCulture<TPropType>(culture); |
There was a problem hiding this comment.
А для всех полей можно использовать культуру?
There was a problem hiding this comment.
https://learn.microsoft.com/ru-ru/dotnet/api/system.iformattable?view=net-9.0
Почти да, ну для всего что наследуется от IFormattable, строка как минимум не в их числе, поправлю
| var result = ObjectPrinter.For<Person>() | ||
| .Printing(m => m.Pets).Using(s => string.Join(" ", s).Replace("1", "2")) | ||
| .PrintToString(person); |
| public void PrintToString_ShouldSerializeDoubleWithCulture_WhenAllPropertiesAreSet() | ||
| { | ||
| var result = ObjectPrinter.For<Person>() | ||
| .Printing(m => m.Height).Using(CultureInfo.InvariantCulture) | ||
| .PrintToString(person); | ||
|
|
||
| result.Should().Contain("Height = 190.5"); | ||
| } |
There was a problem hiding this comment.
тест не дает инфы о том что только на это поле использовалась культура
There was a problem hiding this comment.
Поправил, теперь проверяем другое форматируемое свойство на предмет неизменности культуры
No description provided.