Use STJ in the demo instead of Newtonsoft.Json

This commit is contained in:
Tyrrrz
2023-02-20 03:40:51 +02:00
parent 31ae0271b9
commit dc20fe9730
6 changed files with 9 additions and 53 deletions

View File

@@ -7,7 +7,6 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
<ItemGroup>

View File

@@ -2,21 +2,4 @@
namespace CliFx.Demo.Domain;
public class Book
{
public string Title { get; }
public string Author { get; }
public DateTimeOffset Published { get; }
public Isbn Isbn { get; }
public Book(string title, string author, DateTimeOffset published, Isbn isbn)
{
Title = title;
Author = author;
Published = published;
Isbn = isbn;
}
}
public record Book(string Title, string Author, DateTimeOffset Published, Isbn Isbn);

View File

@@ -2,32 +2,13 @@
namespace CliFx.Demo.Domain;
public partial class Isbn
public partial record Isbn(int EanPrefix, int RegistrationGroup, int Registrant, int Publication, int CheckDigit)
{
public int EanPrefix { get; }
public int RegistrationGroup { get; }
public int Registrant { get; }
public int Publication { get; }
public int CheckDigit { get; }
public Isbn(int eanPrefix, int registrationGroup, int registrant, int publication, int checkDigit)
{
EanPrefix = eanPrefix;
RegistrationGroup = registrationGroup;
Registrant = registrant;
Publication = publication;
CheckDigit = checkDigit;
}
public override string ToString() =>
$"{EanPrefix:000}-{RegistrationGroup:00}-{Registrant:00000}-{Publication:00}-{CheckDigit:0}";
}
public partial class Isbn
public partial record Isbn
{
public static Isbn Parse(string value, IFormatProvider formatProvider)
{

View File

@@ -4,15 +4,8 @@ using System.Linq;
namespace CliFx.Demo.Domain;
public partial class Library
public partial record Library(IReadOnlyList<Book> Books)
{
public IReadOnlyList<Book> Books { get; }
public Library(IReadOnlyList<Book> books)
{
Books = books;
}
public Library WithBook(Book book)
{
var books = Books.ToList();
@@ -29,7 +22,7 @@ public partial class Library
}
}
public partial class Library
public partial record Library
{
public static Library Empty { get; } = new(Array.Empty<Book>());
}

View File

@@ -1,6 +1,6 @@
using System.IO;
using System.Linq;
using Newtonsoft.Json;
using System.Text.Json;
namespace CliFx.Demo.Domain;
@@ -10,7 +10,7 @@ public class LibraryProvider
private void StoreLibrary(Library library)
{
var data = JsonConvert.SerializeObject(library);
var data = JsonSerializer.Serialize(library);
File.WriteAllText(StorageFilePath, data);
}
@@ -21,7 +21,7 @@ public class LibraryProvider
var data = File.ReadAllText(StorageFilePath);
return JsonConvert.DeserializeObject<Library>(data) ?? Library.Empty;
return JsonSerializer.Deserialize<Library>(data) ?? Library.Empty;
}
public Book? TryGetBook(string title) => GetLibrary().Books.FirstOrDefault(b => b.Title == title);

View File

@@ -23,7 +23,7 @@ By using this project or its source code, for any purpose and in any shape or fo
- You **support Ukraine's territorial integrity, including its claims over temporarily occupied territories of Crimea and Donbas**
- You **reject false narratives perpetuated by Russian state propaganda**
To learn more about the war and how you can help, [click here](https://tyrrrz.me). Glory to Ukraine! 🇺🇦
To learn more about the war and how you can help, [click here](https://tyrrrz.me/ukraine). Glory to Ukraine! 🇺🇦
## Install