Use abstract static member, add publish script
This commit is contained in:
parent
1668b7c9a1
commit
d48a74912a
20 changed files with 66 additions and 84 deletions
|
|
@ -154,15 +154,16 @@ namespace AudibleUtilities
|
|||
#if DEBUG
|
||||
//System.IO.File.WriteAllText(library_json, AudibleApi.Common.Converter.ToJson(items));
|
||||
#endif
|
||||
var validators = new List<IValidator>();
|
||||
validators.AddRange(Validators.GetValidators());
|
||||
foreach (var v in validators)
|
||||
{
|
||||
var exceptions = v.Validate(items);
|
||||
if (exceptions is not null && exceptions.Any())
|
||||
throw new AggregateException(exceptions);
|
||||
}
|
||||
var exceptions = new List<Exception>();
|
||||
|
||||
exceptions.AddRange(IValidator.Validate<LibraryValidator>(items));
|
||||
exceptions.AddRange(IValidator.Validate<BookValidator>(items));
|
||||
exceptions.AddRange(IValidator.Validate<CategoryValidator>(items));
|
||||
exceptions.AddRange(IValidator.Validate<ContributorValidator>(items));
|
||||
exceptions.AddRange(IValidator.Validate<SeriesValidator>(items));
|
||||
|
||||
if (exceptions.Any())
|
||||
throw new AggregateException(exceptions);
|
||||
return items;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,25 +5,16 @@ using AudibleApi.Common;
|
|||
|
||||
namespace AudibleUtilities
|
||||
{
|
||||
public static class Validators
|
||||
{
|
||||
public static IValidator[] GetValidators()
|
||||
=> new IValidator[]
|
||||
{
|
||||
new LibraryValidator(),
|
||||
new BookValidator(),
|
||||
new CategoryValidator(),
|
||||
new ContributorValidator(),
|
||||
new SeriesValidator(),
|
||||
};
|
||||
}
|
||||
public interface IValidator
|
||||
{
|
||||
IEnumerable<Exception> Validate(IEnumerable<Item> items);
|
||||
public static abstract IEnumerable<Exception> Validate(IEnumerable<Item> items);
|
||||
public static IEnumerable<Exception> Validate<T>(IEnumerable<Item> items)
|
||||
where T : IValidator
|
||||
=> T.Validate(items);
|
||||
}
|
||||
public class LibraryValidator : IValidator
|
||||
{
|
||||
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
{
|
||||
var exceptions = new List<Exception>();
|
||||
|
||||
|
|
@ -37,7 +28,7 @@ namespace AudibleUtilities
|
|||
}
|
||||
public class BookValidator : IValidator
|
||||
{
|
||||
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
{
|
||||
var exceptions = new List<Exception>();
|
||||
|
||||
|
|
@ -55,7 +46,7 @@ namespace AudibleUtilities
|
|||
}
|
||||
public class CategoryValidator : IValidator
|
||||
{
|
||||
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
{
|
||||
var exceptions = new List<Exception>();
|
||||
|
||||
|
|
@ -70,7 +61,7 @@ namespace AudibleUtilities
|
|||
}
|
||||
public class ContributorValidator : IValidator
|
||||
{
|
||||
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
{
|
||||
var exceptions = new List<Exception>();
|
||||
|
||||
|
|
@ -84,7 +75,7 @@ namespace AudibleUtilities
|
|||
}
|
||||
public class SeriesValidator : IValidator
|
||||
{
|
||||
public IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
public static IEnumerable<Exception> Validate(IEnumerable<Item> items)
|
||||
{
|
||||
var exceptions = new List<Exception>();
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,11 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0-windows</TargetFramework>
|
||||
<EnablePreviewFeatures>True</EnablePreviewFeatures>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- <PackageReference Include="AudibleApi" Version="4.2.2.1" /> -->
|
||||
<ProjectReference Include="..\..\..\audible api\AudibleApi\AudibleApi\AudibleApi.csproj" />
|
||||
|
||||
<PackageReference Include="AudibleApi" Version="4.2.2.1" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue