2の可能性は
- は(例えばDateTime.TryParseなどのいくつかのBCL方法において使用される)TryXXXパターンを使用する気に春。
- 操作のステータスと結果を含むクラスをデザインし、このクラスを返すようにします。
最初に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