Conversation
ObjectPrinting/ObjectExtensions.cs
Outdated
| { | ||
| public static class ObjectExtensions | ||
| { | ||
| public static string PrintToString<T>(this T obj) |
There was a problem hiding this comment.
Кажется не совсем удачное название, так как ты просто возвращаешь строку и не понятно почему Print. Предлагаю либо указывать что мы преобразуем в строку (но тогда по сути достаточно ToString() переопределить), либо сделать действительно Print, который будет печатать в консоль
ObjectPrinting/PrintingConfig.cs
Outdated
|
|
||
| private readonly Dictionary<Type, Func<object, string>> _typeSerializers; | ||
| private readonly Dictionary<string, Func<TOwner, string>> _propertySerializers; | ||
| private readonly HashSet<(string name, object current, object parent)> _printedObjects = []; |
There was a problem hiding this comment.
Кажется, что лучше тут создать record и складывать его в hashset
|
|
||
| public PrintingConfig<TOwner> Excluding<TPropType>() | ||
| { | ||
| var excludedTypes = new HashSet<Type>(_excludedTypes) |
There was a problem hiding this comment.
Для иммутабельности PrintingConfig
ObjectPrinting/PrintingConfig.cs
Outdated
| _propertySerializers = propertySerializers ?? new Dictionary<string, Func<TOwner, string>>(); | ||
| } | ||
|
|
||
| public PrintingConfig<TOwner> BuildPrintingConfig( |
There was a problem hiding this comment.
Смотри, у тебя +- в каждом методе вызывается BuildPrintingConfig. При этом он публичный. Точно ли он должен быть доступным извне?
Вообще если делать что то вроде билдера, то в билдерах обычно в конце вызывается метод Build
There was a problem hiding this comment.
private не получится так, как он используется в PropertyPrintingConfig, можно internal и он будет CopyWithChanges, он просто копию возвращает с заменой полей
Наставник: @Zuguki
Реализовал минимальные требования, пока не понял как сделать рабочий функционал для словарей и коллекций.