1+ namespace CSharpCodeAnalyst . Common ;
2+
3+ /// <summary>
4+ /// Without data
5+ /// </summary>
6+ public class Result
7+ {
8+ private Result ( bool isSuccess , bool isCanceled , Exception ? error )
9+ {
10+ IsSuccess = isSuccess ;
11+ IsCanceled = isCanceled ;
12+ Error = error ;
13+ }
14+
15+ public bool IsSuccess { get ; }
16+ public bool IsCanceled { get ; }
17+
18+ public bool IsFailure
19+ {
20+ get => ! IsSuccess && ! IsCanceled ;
21+ }
22+
23+ public Exception ? Error { get ; }
24+
25+ public static Result Success ( )
26+ {
27+ return new Result ( true , false , null ) ;
28+ }
29+
30+ public static Result Failure ( Exception error )
31+ {
32+ return new Result ( false , false , error ) ;
33+ }
34+
35+ public static Result Canceled ( )
36+ {
37+ return new Result ( false , true , null ) ;
38+ }
39+ }
40+
41+ public class Result < T >
42+ {
43+
44+ private Result ( bool isSuccess , T ? data , Exception ? error , bool isCanceled )
45+ {
46+ IsCanceled = isCanceled ;
47+ IsSuccess = isSuccess ;
48+ Data = data ;
49+ Error = error ;
50+ }
51+
52+ public bool IsSuccess { get ; }
53+ public bool IsCanceled { get ; }
54+ public T ? Data { get ; }
55+ public Exception ? Error { get ; }
56+
57+ public static Result < T > Success ( T data )
58+ {
59+ return new Result < T > ( true , data , null , false ) ;
60+ }
61+
62+ public static Result < T > Failure ( Exception error )
63+ {
64+ return new Result < T > ( false , default , error , false ) ;
65+ }
66+
67+ public static Result < T > Canceled ( )
68+ {
69+ return new Result < T > ( false , default , null , true ) ;
70+ }
71+ }
0 commit comments