Kommentare zur Dokumentation hinzugefügt und Pakete konfiguriert.
This commit is contained in:
BIN
DigitalData.Core.DTO/Assets/icon.png
Normal file
BIN
DigitalData.Core.DTO/Assets/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1020 KiB |
@@ -4,8 +4,19 @@ using System.Configuration;
|
||||
|
||||
namespace DigitalData.Core.DTO
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides extension methods for dependency injection.
|
||||
/// </summary>
|
||||
public static class DIExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds the <see cref="CookieConsentSettings"/> to the service collection.
|
||||
/// </summary>
|
||||
/// <param name="services">The service collection to add the settings to.</param>
|
||||
/// <returns>The updated service collection.</returns>
|
||||
/// <exception cref="ConfigurationErrorsException">
|
||||
/// Thrown if the 'CookieConsentSettings' section is missing or improperly configured in appsettings.json.
|
||||
/// </exception>
|
||||
public static IServiceCollection AddCookieConsentSettings(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton(sp =>
|
||||
@@ -19,4 +30,4 @@ namespace DigitalData.Core.DTO
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,38 +3,84 @@ using System.Text;
|
||||
|
||||
namespace DigitalData.Core.DTO
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides extension methods for data transfer objects (DTOs).
|
||||
/// </summary>
|
||||
public static class DTOExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds a single message to the result.
|
||||
/// </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
|
||||
{
|
||||
result.Messages.Add(message);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds multiple messages to the result.
|
||||
/// </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
|
||||
{
|
||||
result.Messages.AddRange(messages);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a collection of messages to the result.
|
||||
/// </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 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
|
||||
{
|
||||
result.Messages.AddRange(messages);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a notice to the result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the result.</typeparam>
|
||||
/// <param name="result">The result to add the notice to.</param>
|
||||
/// <param name="notice">The notice to add.</param>
|
||||
/// <returns>The updated result.</returns>
|
||||
public static T Notice<T>(this T result, Notice notice) where T : Result
|
||||
{
|
||||
result.Notices.Add(notice);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a collection of notices to the result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the result.</typeparam>
|
||||
/// <param name="result">The result to add the notices to.</param>
|
||||
/// <param name="notices">The collection of notices to add.</param>
|
||||
/// <returns>The updated result.</returns>
|
||||
public static T Notice<T>(this T result, IEnumerable<Notice> notices) where T : Result
|
||||
{
|
||||
result.Notices.AddRange(notices);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds notices with a specific log level and flags to the result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the result.</typeparam>
|
||||
/// <param name="result">The result to add the notices to.</param>
|
||||
/// <param name="level">The log level of the notices.</param>
|
||||
/// <param name="flags">The flags associated with the notices.</param>
|
||||
/// <returns>The updated result.</returns>
|
||||
public static T Notice<T>(this T result, LogLevel level, params Enum[] flags) where T : Result
|
||||
{
|
||||
var notices = flags.Select(flag => new Notice()
|
||||
@@ -46,6 +92,15 @@ namespace DigitalData.Core.DTO
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a notice with a specific log level, flag, and messages to the result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the result.</typeparam>
|
||||
/// <param name="result">The result to add the notice to.</param>
|
||||
/// <param name="level">The log level of the notice.</param>
|
||||
/// <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
|
||||
{
|
||||
result.Notices.Add(new Notice()
|
||||
@@ -57,6 +112,14 @@ namespace DigitalData.Core.DTO
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a notice with a specific log level and messages to the result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the result.</typeparam>
|
||||
/// <param name="result">The result to add the notice to.</param>
|
||||
/// <param name="level">The log level of 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, params string[] messages) where T : Result
|
||||
{
|
||||
result.Notices.Add(new Notice()
|
||||
@@ -68,57 +131,154 @@ namespace DigitalData.Core.DTO
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if any notice has the specified flag.
|
||||
/// </summary>
|
||||
/// <param name="notices">The collection of notices to check.</param>
|
||||
/// <param name="flag">The flag to check for.</param>
|
||||
/// <returns>True if any notice has the specified flag; otherwise, false.</returns>
|
||||
public static bool HasFlag(this IEnumerable<Notice> notices, Enum flag) => notices.Any(n => n.Flag?.ToString() == flag.ToString());
|
||||
|
||||
/// <summary>
|
||||
/// Checks if any notice has any of the specified flags.
|
||||
/// </summary>
|
||||
/// <param name="notices">The collection of notices to check.</param>
|
||||
/// <param name="flags">The flags to check for.</param>
|
||||
/// <returns>True if any notice has any of the specified flags; otherwise, false.</returns>
|
||||
public static bool HasAnyFlag(this IEnumerable<Notice> notices, params Enum[] flags) => flags.Any(f => notices.HasFlag(f));
|
||||
|
||||
/// <summary>
|
||||
/// Executes a function based on the success or failure of the result.
|
||||
/// </summary>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="result">The result to evaluate.</param>
|
||||
/// <param name="Success">The function to execute if the result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static I Then<I>(this Result result, Func<I> Success, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
return result.IsSuccess ? Success() : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously executes a function based on the success or failure of the result.
|
||||
/// </summary>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="result">The result to evaluate.</param>
|
||||
/// <param name="SuccessAsync">The asynchronous function to execute if the result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static async Task<I> ThenAsync<I>(this Result result, Func<Task<I>> SuccessAsync, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
return result.IsSuccess ? await SuccessAsync() : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Executes a function based on the success or failure of the data result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data in the result.</typeparam>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="result">The data result to evaluate.</param>
|
||||
/// <param name="Success">The function to execute if the data result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the data result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static I Then<T, I>(this DataResult<T> result, Func<T, I> Success, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
return result.IsSuccess ? Success(result.Data) : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously executes a function based on the success or failure of the data result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data in the result.</typeparam>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="result">The data result to evaluate.</param>
|
||||
/// <param name="SuccessAsync">The asynchronous function to execute if the data result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the data result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static async Task<I> ThenAsync<T, I>(this DataResult<T> result, Func<T, Task<I>> SuccessAsync, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
return result.IsSuccess ? await SuccessAsync(result.Data) : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously executes a function based on the success or failure of a task returning a result.
|
||||
/// </summary>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="tResult">The task returning a result to evaluate.</param>
|
||||
/// <param name="Success">The function to execute if the result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static async Task<I> ThenAsync<I>(this Task<Result> tResult, Func<I> Success, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
Result result = await tResult;
|
||||
return result.IsSuccess ? Success() : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously executes a function based on the success or failure of a task returning a result.
|
||||
/// </summary>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="tResult">The task returning a result to evaluate.</param>
|
||||
/// <param name="SuccessAsync">The asynchronous function to execute if the result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static async Task<I> ThenAsync<I>(this Task<Result> tResult, Func<Task<I>> SuccessAsync, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
Result result = await tResult;
|
||||
return result.IsSuccess ? await SuccessAsync() : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously executes a function based on the success or failure of a task returning a data result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data in the result.</typeparam>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="tResult">The task returning a data result to evaluate.</param>
|
||||
/// <param name="Success">The function to execute if the data result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the data result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static async Task<I> ThenAsync<T, I>(this Task<DataResult<T>> tResult, Func<T, I> Success, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
DataResult<T> result = await tResult;
|
||||
return result.IsSuccess ? Success(result.Data) : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously executes a function based on the success or failure of a task returning a data result.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data in the result.</typeparam>
|
||||
/// <typeparam name="I">The type of the return value.</typeparam>
|
||||
/// <param name="tResult">The task returning a data result to evaluate.</param>
|
||||
/// <param name="SuccessAsync">The asynchronous function to execute if the data result is successful.</param>
|
||||
/// <param name="Fail">The function to execute if the data result is a failure.</param>
|
||||
/// <returns>The result of the executed function.</returns>
|
||||
public static async Task<I> ThenAsync<T, I>(this Task<DataResult<T>> tResult, Func<T, Task<I>> SuccessAsync, Func<List<string>, List<Notice>, I> Fail)
|
||||
{
|
||||
DataResult<T> result = await tResult;
|
||||
return result.IsSuccess ? await SuccessAsync(result.Data) : Fail(result.Messages, result.Notices);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Joins the values into a single string with optional start, separator, and end strings.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the values.</typeparam>
|
||||
/// <param name="values">The values to join.</param>
|
||||
/// <param name="start">The starting string.</param>
|
||||
/// <param name="separator">The separator string.</param>
|
||||
/// <param name="end">The ending string.</param>
|
||||
/// <returns>The joined string.</returns>
|
||||
public static string Join<T>(this IEnumerable<T> values, string start = "", string seperator = ". ", string end = ".")
|
||||
=> new StringBuilder(start).Append(string.Join(seperator, values)).Append(end).ToString();
|
||||
|
||||
/// <summary>
|
||||
/// Logs the notices using the specified logger.
|
||||
/// </summary>
|
||||
/// <param name="logger">The logger to use.</param>
|
||||
/// <param name="notices">The collection of notices to log.</param>
|
||||
/// <param name="start">The starting string for each notice.</param>
|
||||
/// <param name="separator">The separator string for messages in each notice.</param>
|
||||
/// <param name="end">The ending string for each notice.</param>
|
||||
public static void LogNotice(this ILogger logger, IEnumerable<Notice> notices, string start = ": ", string seperator = ". ", string end = ".\n")
|
||||
{
|
||||
foreach(LogLevel level in Enum.GetValues(typeof(LogLevel)))
|
||||
@@ -142,11 +302,29 @@ namespace DigitalData.Core.DTO
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Logs the notices from a result using the specified logger.
|
||||
/// </summary>
|
||||
/// <param name="logger">The logger to use.</param>
|
||||
/// <param name="result">The result containing the notices to log.</param>
|
||||
/// <param name="start">The starting string for each notice.</param>
|
||||
/// <param name="separator">The separator string for messages in each notice.</param>
|
||||
/// <param name="end">The ending string for each notice.</param>
|
||||
public static void LogNotice(this ILogger logger, Result result, string start = ": ", string seperator = ". ", string end = ".\n")
|
||||
=> logger.LogNotice(notices: result.Notices, start: start, seperator: seperator, end: end);
|
||||
|
||||
/// <summary>
|
||||
/// Determines if the data result is right (true).
|
||||
/// </summary>
|
||||
/// <param name="bResult">The data result to evaluate.</param>
|
||||
/// <returns>True if the data result is true; otherwise, false.</returns>
|
||||
public static bool IsRight(this DataResult<bool> bResult) => bResult.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Determines if the data result is wrong (false).
|
||||
/// </summary>
|
||||
/// <param name="bResult">The data result to evaluate.</param>
|
||||
/// <returns>True if the data result is false; otherwise, false.</returns>
|
||||
public static bool IsWrong(this DataResult<bool> bResult) => !bResult.Data;
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,25 @@
|
||||
|
||||
namespace DigitalData.Core.DTO
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a result of an operation that includes data, inheriting from <see cref="Result"/>.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data included in the result.</typeparam>
|
||||
public class DataResult<T> : Result
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the data included in the result. This property is required.
|
||||
/// It will be ignored during JSON serialization if the value is null.
|
||||
/// </summary>
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
public required T Data { get; set; }
|
||||
|
||||
public DataResult<I> ToFail<I>() => Fail<I>().Message(Messages).Notice(Notices);
|
||||
}
|
||||
/// <summary>
|
||||
/// Converts the current <see cref="DataResult{T}"/> to a failed <see cref="DataResult{I}"/>,
|
||||
/// preserving the messages and notices.
|
||||
/// </summary>
|
||||
/// <typeparam name="I">The type of the data in the new failed result.</typeparam>
|
||||
/// <returns>A failed <see cref="DataResult{I}"/> with the current messages and notices.</returns>
|
||||
public DataResult<I> ToFail<I>() => Fail<I>().Message(Messages).Notice(Notices);
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,26 @@
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<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>1.0.0</Version>
|
||||
<Authors>Digital Data GmbH</Authors>
|
||||
<Company>Digital Data GmbH</Company>
|
||||
<Product>DigitalData.Core.DTO</Product>
|
||||
<Copyright>Copyright 2024</Copyright>
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
<RepositoryUrl>http://git.dd:3000/AppStd/WebCoreModules.git</RepositoryUrl>
|
||||
<PackageTags>digital data core dto clean architecture result pattern</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="..\DigitalData.Core.Abstractions\Assets\icon.png">
|
||||
<Pack>True</Pack>
|
||||
<PackagePath>\</PackagePath>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
|
||||
@@ -14,4 +32,11 @@
|
||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="Assets\icon.png">
|
||||
<PackagePath>\</PackagePath>
|
||||
<Pack>True</Pack>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -2,10 +2,24 @@
|
||||
|
||||
namespace DigitalData.Core.DTO
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a notice for logging purposes, containing a flag, log level, and associated messages.
|
||||
/// </summary>
|
||||
public class Notice
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets an optional flag associated with the notice.
|
||||
/// </summary>
|
||||
public Enum? Flag { get; init; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the log level for the notice.
|
||||
/// </summary>
|
||||
public LogLevel Level { get; init; } = LogLevel.None;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of messages associated with the notice.
|
||||
/// </summary>
|
||||
public List<string> Messages { get; init; } = new();
|
||||
}
|
||||
}
|
||||
@@ -2,17 +2,39 @@
|
||||
|
||||
namespace DigitalData.Core.DTO
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the result of an operation, containing information about its success or failure,
|
||||
/// messages for the client, and notices for logging.
|
||||
/// </summary>
|
||||
public class Result
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether the operation was successful.
|
||||
/// </summary>
|
||||
public bool IsSuccess { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether the operation failed.
|
||||
/// </summary>
|
||||
public bool IsFailed => !IsSuccess;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of messages intended for the client.
|
||||
/// </summary>
|
||||
public List<string> Messages { get; init; } = new();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of notices intended for logging purposes. This property is ignored during JSON serialization.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public List<Notice> Notices = new();
|
||||
|
||||
/// <summary>
|
||||
/// Creates a <see cref="DataResult{T}"/> with the specified data.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data.</typeparam>
|
||||
/// <param name="data">The data to include in the result.</param>
|
||||
/// <returns>A new <see cref="DataResult{T}"/> instance.</returns>
|
||||
public DataResult<T> Data<T>(T data) => new()
|
||||
{
|
||||
IsSuccess = IsSuccess,
|
||||
@@ -21,20 +43,49 @@ namespace DigitalData.Core.DTO
|
||||
Data = data
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Checks if any notice has the specified flag.
|
||||
/// </summary>
|
||||
/// <param name="flag">The flag to check.</param>
|
||||
/// <returns>True if any notice has the specified flag; otherwise, false.</returns>
|
||||
public bool HasFlag(Enum flag) => Notices.Any(n => n.Flag?.ToString() == flag.ToString());
|
||||
|
||||
public bool HasAnyFlag(params Enum[] flags) => flags.Any(f => HasFlag(f));
|
||||
/// <summary>
|
||||
/// Checks if any notice has any of the specified flags.
|
||||
/// </summary>
|
||||
/// <param name="flags">The flags to check.</param>
|
||||
/// <returns>True if any notice has any of the specified flags; otherwise, false.</returns>
|
||||
public bool HasAnyFlag(params Enum[] flags) => flags.Any(HasFlag);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new successful <see cref="Result"/>.
|
||||
/// </summary>
|
||||
/// <returns>A new successful <see cref="Result"/>.</returns>
|
||||
public static Result Success() => new() { IsSuccess = true };
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new failed <see cref="Result"/>.
|
||||
/// </summary>
|
||||
/// <returns>A new failed <see cref="Result"/>.</returns>
|
||||
public static Result Fail() => new() { IsSuccess = false };
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new successful <see cref="DataResult{T}"/> with the specified data.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data.</typeparam>
|
||||
/// <param name="data">The data to include in the result.</param>
|
||||
/// <returns>A new successful <see cref="DataResult{T}"/> with the specified data.</returns>
|
||||
public static DataResult<T> Success<T>(T data) => new()
|
||||
{
|
||||
IsSuccess = true,
|
||||
Data = data
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new failed <see cref="DataResult{T}"/> with no data.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the data.</typeparam>
|
||||
/// <returns>A new failed <see cref="DataResult{T}"/> with no data.</returns>
|
||||
#pragma warning disable CS8601 // Possible null reference assignment.
|
||||
public static DataResult<T> Fail<T>() => new()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user