2 Commits

2 changed files with 22 additions and 12 deletions

View File

@@ -9,28 +9,36 @@ namespace DigitalData.Core.DTO
public static class DTOExtensions
{
/// <summary>
/// Adds a single message to the result.
/// Adds a single message to the result, if not null.
/// </summary>
/// <typeparam name="T">The type of the result.</typeparam>
/// <param name="result">The result to add the message to.</param>
/// <param name="message">The message to add.</param>
/// <returns>The updated result.</returns>
public static T Message<T>(this T result, string message) where T : Result
public static T Message<T>(this T result, string? message) where T : Result
{
result.Messages.Add(message);
if(message is not null)
result.Messages.Add(message);
return result;
}
internal static IEnumerable<T> FilterNull<T>(this IEnumerable<T?> list)
{
foreach (var item in list)
if(item is not null)
yield return item;
}
/// <summary>
/// Adds multiple messages to the result.
/// Adds multiple messages to the result, after removing nulls.
/// </summary>
/// <typeparam name="T">The type of the result.</typeparam>
/// <param name="result">The result to add the messages to.</param>
/// <param name="messages">The messages to add.</param>
/// <returns>The updated result.</returns>
public static T Message<T>(this T result, params string[] messages) where T : Result
public static T Message<T>(this T result, params string?[] messages) where T : Result
{
result.Messages.AddRange(messages);
result.Messages.AddRange(messages.FilterNull());
return result;
}
@@ -41,9 +49,9 @@ namespace DigitalData.Core.DTO
/// <param name="result">The result to add the messages to.</param>
/// <param name="messages">The collection of messages to add.</param>
/// <returns>The updated result.</returns>
public static T Message<T>(this T result, IEnumerable<string> messages) where T : Result
public static T Message<T>(this T result, IEnumerable<string?> messages) where T : Result
{
result.Messages.AddRange(messages);
result.Messages.AddRange(messages.FilterNull());
return result;
}
@@ -101,13 +109,13 @@ namespace DigitalData.Core.DTO
/// <param name="flag">The flag associated with the notice.</param>
/// <param name="messages">The messages to add to the notice.</param>
/// <returns>The updated result.</returns>
public static T Notice<T>(this T result, LogLevel level, Enum flag, params string[] messages) where T : Result
public static T Notice<T>(this T result, LogLevel level, Enum flag, params string?[] messages) where T : Result
{
result.Notices.Add(new Notice()
{
Flag = flag,
Level = level,
Messages = messages.ToList()
Messages = messages.FilterNull().ToList()
});
return result;
}
@@ -126,7 +134,7 @@ namespace DigitalData.Core.DTO
{
Flag = null,
Level = level,
Messages = messages.ToList()
Messages = messages.FilterNull().ToList()
});
return result;
}

View File

@@ -7,7 +7,7 @@
<Description>This package provides Data Transfer Object (DTO) implementations and related utilities. It includes generic result handling, DTO extension methods, cookie consent settings management, and AutoMapper integration for robust object mapping, all adhering to Clean Architecture principles to ensure separation of concerns and maintainability.</Description>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageId>DigitalData.Core.DTO</PackageId>
<Version>2.0.0.0</Version>
<Version>2.0.1</Version>
<Authors>Digital Data GmbH</Authors>
<Company>Digital Data GmbH</Company>
<Product>DigitalData.Core.DTO</Product>
@@ -15,6 +15,8 @@
<PackageIcon>core_icon.png</PackageIcon>
<RepositoryUrl>http://git.dd:3000/AppStd/WebCoreModules.git</RepositoryUrl>
<PackageTags>digital data core dto clean architecture result pattern</PackageTags>
<AssemblyVersion>2.0.1</AssemblyVersion>
<FileVersion>2.0.1</FileVersion>
</PropertyGroup>
<ItemGroup>