11using System ;
22using System . Collections . Generic ;
33
4- // https://josef.codes/my-take-on-the-result-class-in-c-sharp/
5- public abstract class Result
4+ namespace Rivet
65{
7- public bool Success { get ; protected set ; }
8- public bool Failure => ! Success ;
9- }
10-
11- public abstract class Result < T > : Result
12- {
13- private T _data ;
14-
15- protected Result ( T data )
6+ // https://josef.codes/my-take-on-the-result-class-in-c-sharp/
7+ public abstract class Result
168 {
17- Data = data ;
9+ public bool Success { get ; protected set ; }
10+ public bool Failure => ! Success ;
1811 }
1912
20- public T Data
13+ public abstract class Result < T > : Result
2114 {
22- get => Success ? _data : throw new Exception ( $ "You can't access .{ nameof ( Data ) } when .{ nameof ( Success ) } is false") ;
23- set => _data = value ;
15+ private T _data ;
16+
17+ protected Result ( T data )
18+ {
19+ Data = data ;
20+ }
21+
22+ public T Data
23+ {
24+ get => Success ? _data : throw new Exception ( $ "You can't access .{ nameof ( Data ) } when .{ nameof ( Success ) } is false") ;
25+ set => _data = value ;
26+ }
2427 }
25- }
2628
27- public class SuccessResult : Result
28- {
29- public SuccessResult ( )
29+ public class SuccessResult : Result
3030 {
31- Success = true ;
31+ public SuccessResult ( )
32+ {
33+ Success = true ;
34+ }
3235 }
33- }
3436
35- public class SuccessResult < T > : Result < T >
36- {
37- public SuccessResult ( T data ) : base ( data )
37+ public class SuccessResult < T > : Result < T >
3838 {
39- Success = true ;
39+ public SuccessResult ( T data ) : base ( data )
40+ {
41+ Success = true ;
42+ }
4043 }
41- }
4244
43- public class ErrorResult : Result , IErrorResult
44- {
45- public ErrorResult ( string message ) : this ( message , Array . Empty < Error > ( ) )
45+ public class ErrorResult : Result , IErrorResult
4646 {
47+ public ErrorResult ( string message ) : this ( message , Array . Empty < Error > ( ) )
48+ {
49+ }
50+
51+ public ErrorResult ( string message , IReadOnlyCollection < Error > errors )
52+ {
53+ Message = message ;
54+ Success = false ;
55+ Errors = errors ?? Array . Empty < Error > ( ) ;
56+ }
57+
58+ public string Message { get ; }
59+ public IReadOnlyCollection < Error > Errors { get ; }
4760 }
4861
49- public ErrorResult ( string message , IReadOnlyCollection < Error > errors )
62+ public class ErrorResult < T > : Result < T > , IErrorResult
5063 {
51- Message = message ;
52- Success = false ;
53- Errors = errors ?? Array . Empty < Error > ( ) ;
54- }
55-
56- public string Message { get ; }
57- public IReadOnlyCollection < Error > Errors { get ; }
58- }
59-
60- public class ErrorResult < T > : Result < T > , IErrorResult
61- {
62- public ErrorResult ( string message ) : this ( message , Array . Empty < Error > ( ) )
63- {
64+ public ErrorResult ( string message ) : this ( message , Array . Empty < Error > ( ) )
65+ {
66+ }
67+
68+ public ErrorResult ( string message , IReadOnlyCollection < Error > errors ) : base ( default )
69+ {
70+ Message = message ;
71+ Success = false ;
72+ Errors = errors ?? Array . Empty < Error > ( ) ;
73+ }
74+
75+ public string Message { get ; set ; }
76+ public IReadOnlyCollection < Error > Errors { get ; }
6477 }
6578
66- public ErrorResult ( string message , IReadOnlyCollection < Error > errors ) : base ( default )
79+ public class Error
6780 {
68- Message = message ;
69- Success = false ;
70- Errors = errors ?? Array . Empty < Error > ( ) ;
71- }
81+ public Error ( string details ) : this ( null , details )
82+ {
7283
73- public string Message { get ; set ; }
74- public IReadOnlyCollection < Error > Errors { get ; }
75- }
84+ }
7685
77- public class Error
78- {
79- public Error ( string details ) : this ( null , details )
80- {
86+ public Error ( string code , string details )
87+ {
88+ Code = code ;
89+ Details = details ;
90+ }
8191
92+ public string Code { get ; }
93+ public string Details { get ; }
8294 }
8395
84- public Error ( string code , string details )
96+ internal interface IErrorResult
8597 {
86- Code = code ;
87- Details = details ;
98+ string Message { get ; }
99+ IReadOnlyCollection < Error > Errors { get ; }
88100 }
89-
90- public string Code { get ; }
91- public string Details { get ; }
92- }
93-
94- internal interface IErrorResult
95- {
96- string Message { get ; }
97- IReadOnlyCollection < Error > Errors { get ; }
98- }
101+ }
0 commit comments