Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
40814f5
Начальное проектирование
RomanGleyzer Nov 18, 2025
cbc3f74
Реализация PrintingConfig
RomanGleyzer Nov 19, 2025
43a7c9d
Доработка Printing config и реализация PropertyPrintingConfig
RomanGleyzer Nov 20, 2025
dccd877
Добавление возможности проходится по публичным полям
RomanGleyzer Nov 21, 2025
e6573d9
Удаление файлов из Solved
RomanGleyzer Nov 22, 2025
2a6481a
Тесты и методы расширения для сериализации по-умолчанию и с конфигури…
RomanGleyzer Nov 22, 2025
ea530aa
Внес правки по null и можно задавать разные культуры для разных полей…
RomanGleyzer Dec 14, 2025
7ad5472
Исключение в Excluding и Printing с понятным сообщением
RomanGleyzer Dec 14, 2025
30f656f
Не учитываем свойства без публичного геттера
RomanGleyzer Dec 14, 2025
b6eb732
Добавил интерфейсы для основных классов
RomanGleyzer Dec 14, 2025
94c5cf1
Теперь возвращается PropertyPrintingConfig вместо PrintingConfig
RomanGleyzer Dec 14, 2025
542b641
string builder создается только 1 раз
RomanGleyzer Dec 15, 2025
018463a
потокобезопасность
RomanGleyzer Dec 15, 2025
de5a39a
Поменял название у Using
RomanGleyzer Dec 15, 2025
632d54c
нормализация типов
RomanGleyzer Dec 15, 2025
e95b647
Внес правки
RomanGleyzer Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions ObjectPrinting/IPrintingConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Linq.Expressions;

namespace ObjectPrinting;

public interface IPrintingConfig<TOwner>
{
IPrintingConfig<TOwner> Excluding<TPropType>();

IPrintingConfig<TOwner> Excluding<TProp>(Expression<Func<TOwner, TProp>> memberSelector);

IPropertyPrintingConfig<TOwner, TProp> Printing<TProp>();

IPropertyPrintingConfig<TOwner, TProp> Printing<TProp>(Expression<Func<TOwner, TProp>> memberSelector);

string PrintToString(TOwner obj);
}
13 changes: 13 additions & 0 deletions ObjectPrinting/IPropertyPrintingConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System;
using System.Globalization;

namespace ObjectPrinting;

public interface IPropertyPrintingConfig<TOwner, TProp> : IPrintingConfig<TOwner>
{
IPropertyPrintingConfig<TOwner, TProp> UsingSerializer(Func<TProp, string> serializer);

IPropertyPrintingConfig<TOwner, TProp> UsingCulture(CultureInfo culture);

IPropertyPrintingConfig<TOwner, TProp> TrimmedToLength(int maxLength);
}
11 changes: 5 additions & 6 deletions ObjectPrinting/ObjectPrinter.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
namespace ObjectPrinting
namespace ObjectPrinting;

public static class ObjectPrinter
{
public class ObjectPrinter
public static IPrintingConfig<T> For<T>()
{
public static PrintingConfig<T> For<T>()
{
return new PrintingConfig<T>();
}
return new PrintingConfig<T>();
}
}
1 change: 1 addition & 0 deletions ObjectPrinting/ObjectPrinting.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="FluentAssertions" Version="8.8.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageReference Include="NUnit" Version="4.2.2" />
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
Expand Down
16 changes: 16 additions & 0 deletions ObjectPrinting/ObjectPrintingExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System;

namespace ObjectPrinting;

public static class ObjectPrintingExtensions
{
public static string PrintToString<TOwner>(this TOwner obj)
{
return ObjectPrinter.For<TOwner>().PrintToString(obj);
}

public static string PrintToString<TOwner>(this TOwner obj, Func<IPrintingConfig<TOwner>, IPrintingConfig<TOwner>> config)
{
return config(ObjectPrinter.For<TOwner>()).PrintToString(obj);
}
}
Loading