2可能性彈簧介意
- 使用TryXXX圖案(在某些BCL方法如DateTime.TryParse使用)。
- 設計一個包含操作狀態和結果的類,然後讓你的方法返回這個類。
我們先來看看TryXXX模式。它基本上是一個返回布爾值的方法,其結果爲out
參數。
public bool TryXXX(string someInput, out string someResult, out string errorMessage)
{
...
}
這將消耗是這樣的:
string someResult;
string errorMessage;
if (!TryXXX("some parameter", out someResult, out errorMessage))
{
// an error occurred => use errorMessage to get more details
}
else
{
// everything went fine => use the results here
}
在您只需設計一個類將包含所有必要的信息,第二種方法:
public class MyResult
{
public bool Success { get; set; }
public string ErrorMessage { get; set; }
public string SomeResult { get; set; }
}
,然後讓方法返回此類:
public MyResult MyMethod(string someParameter)
{
...
}
將像這樣被消耗:
MyResult result = MyMethod("someParameter");
if (!result.Success)
{
// an error occurred => use result.ErrorMessage to get more details
}
else
{
// everything went fine => use the result.SomeResult here
}
結果當然可以是任何其它複雜的對象,而不是(如在該示例中示出)的字符串。
也可以使其通用於任何結果類型,而不是ju st'AccessToken' – Alexander