namespace SharedContracts.Dapper; public class DapperResult { public TSuccess Success { get; } public TFailure Failure { get; } public bool IsSuccess { get; } private DapperResult(TSuccess success, TFailure failure, bool isSuccess) { Success = success; Failure = failure; IsSuccess = isSuccess; } public static DapperResult Ok(TSuccess success) => new(success, default, true); public static DapperResult Fail(TFailure failure) => new(default, failure, false); }