diff --git a/DigitalData.Core.DTO/DTOExtensions.cs b/DigitalData.Core.DTO/DTOExtensions.cs index c5bee5c..827e89e 100644 --- a/DigitalData.Core.DTO/DTOExtensions.cs +++ b/DigitalData.Core.DTO/DTOExtensions.cs @@ -9,28 +9,36 @@ namespace DigitalData.Core.DTO public static class DTOExtensions { /// - /// Adds a single message to the result. + /// Adds a single message to the result, if not null. /// /// The type of the result. /// The result to add the message to. /// The message to add. /// The updated result. - public static T Message(this T result, string message) where T : Result + public static T Message(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 FilterNull(this IEnumerable list) + { + foreach (var item in list) + if(item is not null) + yield return item; + } + /// - /// Adds multiple messages to the result. + /// Adds multiple messages to the result, after removing nulls. /// /// The type of the result. /// The result to add the messages to. /// The messages to add. /// The updated result. - public static T Message(this T result, params string[] messages) where T : Result + public static T Message(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 /// The result to add the messages to. /// The collection of messages to add. /// The updated result. - public static T Message(this T result, IEnumerable messages) where T : Result + public static T Message(this T result, IEnumerable messages) where T : Result { - result.Messages.AddRange(messages); + result.Messages.AddRange(messages.FilterNull()); return result; } @@ -101,13 +109,13 @@ namespace DigitalData.Core.DTO /// The flag associated with the notice. /// The messages to add to the notice. /// The updated result. - public static T Notice(this T result, LogLevel level, Enum flag, params string[] messages) where T : Result + public static T Notice(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; }