v2.0.0.4127 [RzR] 22-04-2026
Major release — contains breaking changes. See migration-guide.md for full before/after porting steps.
Breaking changes
- [DEV] - (RzR) -> Change namespace from
AggregatedGenericResultMessagetoRzR.ResultMessage. - [FIX] - (RzR) -> Implicit
Exception -> Result/Result<T>operators now throwArgumentNullExceptiononnull(was: silent empty failure). - [FIX] - (RzR) ->
Result<T>(Exception)constructor now adds oneMessageType.Exceptionmessage (was: two: empty info + trace). - [FIX] - (RzR) ->
JoinErrors(IEnumerable<Result>)now derivesIsSuccessfrom the joined collection (was: inherited from caller). - [FIX] - (RzR) ->
Success<T>(T, params RelatedObjectModel[])no longer adds a ghostMessageType.Nonemessage whenrelatedObjectsis empty/null. - [DEV] - (RzR) ->
ExceptionHelper.PreserveStackTracesignature changed:void->ExceptionDispatchInfo - [DEV] - (RzR) ->
GetFirstMessage/GetFirstErrornow fall back to the first exception message when no plain message exists (was: empty string).
Obsoletions (compile warnings; will fail with TreatWarningsAsErrors)
- [DEV] - (RzR) ->
Result<T>.Instance-> useResult<T>.Create(). - [DEV] - (RzR) ->
ActionOnSuccess/ActionOnFailure/ActionOn(4 overloads) -> useTap/Match. - [DEV] - (RzR) -> All 7
FunctionOn*/ExecuteFunctionoverloads takingFunc<Task<TResult>>-> useFunctionExtensionsAsync.*Async(avoids sync-over-async deadlock).
- [DEV] - (RzR) ->
Map<TOut>(Func<T,TOut>),Bind<TOut>(Func<T,Result<TOut>>),Match<TOut>(Func<T,TOut>, Func<Result<T>,TOut>),Tap(Action<T>). - [DEV] - (RzR) ->
MapAsync,BindAsync,TapAsync,MatchAsync, overloads on bothResult<T>andTask<Result<T>>, accepting sync and async delegates. AllConfigureAwait(false). - [DEV] - (RzR) ->
Tap(this Task<Result<T>>, Action<T>)for sync side-effect on awaited results. - [DEV] - (RzR) -> New static class
FunctionExtensionsAsyncexposingFunctionOnSuccessAsync,FunctionOnFailureAsync,FunctionOnAsync(4 overloads),ExecuteFunctionAsync. - [DEV] - (RzR) ->
Validate(Func<T,bool>, error)- accumulates every violation in one chain pass; overloads for(predicate, key, error)and(predicate, MessageDataModel). - [DEV] - (RzR) ->
Ensure(Func<T,bool>, error)— short-circuits onceIsSuccess == false. - [DEV] - (RzR) ->
ValidateAsync— async predicate on bothResult<T>andTask<Result<T>>. - [DEV] - (RzR) -> Match(Func<IResult,TOut>, Func<IResult,TOut>)
and parameterless /Action`-based overloads. - [DEV] - (RzR) ->
MatchAsync<TOut>(Func<IResult,Task<TOut>>, Func<IResult,Task<TOut>>). - [FIX] - (RzR) ->
RelatedObjectModel.ToString()is now null-safe whenInDataSourceNamesisnull
v1.4.1.8497 [RzR] 24-02-2026
- [f47b134] (RzR) -> Auto commit uncommited files
- [6a0d48a] (RzR) -> Fix the
IsFailureflag value.
v1.4.0.7788 [RzR] 09-02-2026
- [f68e0f7] (RzR) -> Auto commit uncommited files
- [1d311f9] (RzR) -> Add new script for version gen.
- [c438299] (RzR) -> Add
IsFailurein result. Add new extension methods:WithMessages,ReturnAutoSuccessOrFailure
-> Upgrade version for the 'CodeSource' package.
-> Upgrade minimum System.Text.Json package required version to 6.0.10, fixing CVE (CVE-2024-43485).
-> Adjust the location for methods: GetFirstMessage, GetFirstMessageWithDetails.
-> Add a new extension for result execution FunctionExtensions (FunctionOnSuccess, FunctionOnFailure, FunctionOn, ExecuteFunction), which allows to execute of one or more functions.
-> Add RelatedObject in code (means related object in code execution, usually used in case of some errors to show method name, stored procedure, table, etc).
-> Adjust code to solution code style.
-> Adjust exposed methods and add a few new.
-> Adjust code to solution code style.
-> Update lib versions.
-> Hide internal used extension.
-> Adjust JSON result/response property name (result => response).
-> Added extension methods(ActionOnSuccess, ActionOnFailure, ActionOn, ExecuteAction) which allow executing custom actions on specific cases or in any case you want or need.
-> Removed from solution reference DomainCommonExtensions to reduce package size and allow more dynamic package use without adding unnecessary components.
-> Added reference to CodeSource to set the code reference of the methods used from DomainCommonExtensions.
-> In the MessageModel was added a new property named LogTraceId as a unique id for the message.
-> Added more user-friendly result configuration with methods: WithMessage, WithKeyCode, WithCodeMessage, WithError, WithErrors.
-> Added new model ResultError used in WithError and WithErrors.
-> Cleaned up code and reorganization on project structure by extracting functionalities to separate classes.
-> Was added new custom responses.
-> Was updated libs.
-> Was added support for .net framework 4.5.
-> Added support for SOAP services result. Cast from Result or Result<T> to acceptable result for SOAP (to XML result) in particular use in .net framework.
-> Was added an extension method for SOAP result ToSoapResult.
-> Was added support for .net framework 4.6.1 - 4.8.
-> Libs upgrade and retested some cases.
-> Was added a new message result Exception.
-> Was added a new methods for 'Exception': AddException, HasAnyExceptions.
-> Was added a new method for 'Error result': HasAnyErrorsOrExceptions.
-> Was adjusted the method for 'Error result': GetFirstError return non null value.
-> Was added a new operators for: catch Exception, bool or T response on return from methods.
-> Was adjusted the methods from ResultOfT for JoinResults and added new method JoinErrorResults.
-> Was update libs, cleaned code, optimized and reorganized.
-> Clean project and organized for more readable code.
-> Removed local string extension class.
-> Added missing comments.
-> Changed the readme file, by adding install from NuGet.
-> Was fixed runtime error on using lib in project