先來看看一些專案的程式碼
SimplCommerce 的 Result.cs
cloudscribe.SimpleContent 的 CommandResult.cs
像這樣的 Result class 常用到的情境像是去打API後拿資料 當然打API有失敗的可能所以都會想一個處理方法
我自己用的程式碼是
public abstract class GenericResultDto<T>
{
    protected bool _isSuccess;
    public bool IsSuccess => _isSuccess;
    public bool IsFail => _isSuccess == false;
    protected string _errorMessage;
    public string ErrorMessage => _errorMessage;
    protected T _value;
    public T Value => _value;
}
public sealed class SuccessResultDto<T> : GenericResultDto<T>
{
    public SuccessResultDto(T value = default,string errorMessage = default)
    {
        _isSuccess = true;
        _value = value;
        _errorMessage = errorMessage;
    }
}
public sealed class FailResultDto<T> : GenericResultDto<T>
{
    public FailResultDto(string errorMessage = default, T value = default)
    {
        _isSuccess = false;
        _errorMessage = errorMessage;
        _value = value;
    }
}
有用一些物件導向手法讓我來說明
public bool IsFail => _isSuccess == false;
使用上的範例code
GenericResultDto<DateTime> Demo(bool isNow)
{
    if(isNow)
    {
        return new SuccessResultDto<DateTime>(DateTime.Now);
    }
    return new FailResultDto<DateTime>("some message");
}
在新手村學到的各種技巧,混合在一起就會產生不同的效果
只是通常都是停留在看都懂,遇到問題都不知道怎樣運用的階段
所以打好基礎跟找到好團隊一起下副本,就比較容易通過這階段
準備離開新手村時 有這樣的組合技能力 下副本時一定用的上