From d76f6ed1276969b2caa66f9fc34bd2070d1a0185 Mon Sep 17 00:00:00 2001 From: Matt Bird Date: Wed, 9 Nov 2022 09:34:29 +0000 Subject: [PATCH] Better return types for lists that aren't really mutable --- .../WebController/ResultDtoExtensions.cs | 2 +- src/FluentResults/Factories/ResultHelper.cs | 6 +++--- src/FluentResults/Results/Result.cs | 2 +- src/FluentResults/Results/ResultBase.cs | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/FluentResults.Samples/WebController/ResultDtoExtensions.cs b/src/FluentResults.Samples/WebController/ResultDtoExtensions.cs index 35fc3cf..b646033 100644 --- a/src/FluentResults.Samples/WebController/ResultDtoExtensions.cs +++ b/src/FluentResults.Samples/WebController/ResultDtoExtensions.cs @@ -13,7 +13,7 @@ public static ResultDto ToResultDto(this Result result) return new ResultDto(false, TransformErrors(result.Errors)); } - private static IEnumerable TransformErrors(List errors) + private static IEnumerable TransformErrors(IEnumerable errors) { return errors.Select(TransformError); } diff --git a/src/FluentResults/Factories/ResultHelper.cs b/src/FluentResults/Factories/ResultHelper.cs index 6c6d039..b523a8d 100644 --- a/src/FluentResults/Factories/ResultHelper.cs +++ b/src/FluentResults/Factories/ResultHelper.cs @@ -27,7 +27,7 @@ public static Result> MergeWithValue( } public static bool HasError( - List errors, + IEnumerable errors, Func predicate, out IEnumerable result) where TError : IError @@ -53,7 +53,7 @@ public static bool HasError( } public static bool HasException( - List errors, + IEnumerable errors, Func predicate, out IEnumerable result) where TException : Exception @@ -83,7 +83,7 @@ public static bool HasException( } public static bool HasSuccess( - List successes, + IEnumerable successes, Func predicate, out IEnumerable result) where TSuccess : ISuccess { diff --git a/src/FluentResults/Results/Result.cs b/src/FluentResults/Results/Result.cs index 652708e..eef2098 100644 --- a/src/FluentResults/Results/Result.cs +++ b/src/FluentResults/Results/Result.cs @@ -497,7 +497,7 @@ public void Deconstruct(out bool isSuccess, out bool isFailed, out TValue value, isSuccess = IsSuccess; isFailed = IsFailed; value = IsSuccess ? Value : default; - errors = IsFailed ? Errors : default; + errors = IsFailed ? Errors.ToList() : default; } private void ThrowIfFailed() diff --git a/src/FluentResults/Results/ResultBase.cs b/src/FluentResults/Results/ResultBase.cs index e0b23df..98afdfb 100644 --- a/src/FluentResults/Results/ResultBase.cs +++ b/src/FluentResults/Results/ResultBase.cs @@ -26,12 +26,12 @@ public interface IResultBase /// /// Get all errors /// - List Errors { get; } + IReadOnlyList Errors { get; } /// /// Get all successes /// - List Successes { get; } + IReadOnlyList Successes { get; } } public abstract class ResultBase : IResultBase @@ -54,12 +54,12 @@ public abstract class ResultBase : IResultBase /// /// /// - public List Errors => Reasons.OfType().ToList(); + public IReadOnlyList Errors => Reasons.OfType().ToList().AsReadOnly(); /// /// /// - public List Successes => Reasons.OfType().ToList(); + public IReadOnlyList Successes => Reasons.OfType().ToList().AsReadOnly(); protected ResultBase() { @@ -226,7 +226,7 @@ public void Deconstruct(out bool isSuccess, out bool isFailed, out List { isSuccess = IsSuccess; isFailed = IsFailed; - errors = IsFailed ? Errors : default; + errors = IsFailed ? Errors.ToList() : default; } }