メソッドから返す結果クラスを作成し、問題が発生したときにCreateSomething()
をスローすることができます。FaultException
public AddMemberResult AddMember(Member member)
{
// check all input, create the member
if (allGood)
{
return new AddMemberResult { UserID = createdMember.ID };
}
else
{
throw new FaultException<AddMemberError>(new AddMemberError(errors));
}
}
class AddMemberResult
{
public int UserID { get; set; }
}
class AddMemberError
{
public AddMemberError(List<Error> errors)
{
Errors = errors;
}
List<Error> Errors { get; set; }
}
class Error
{
public int Code { get; set; }
public string Description { get; set; }
}
もちろん、int
からAddMember()
を返すこともできますが、戻り型としてクラスを使用すると、すべてのクライアントを更新しなくてもバージョン管理を適用できます。新しいプロパティを追加する場合、たとえば、boolean IsActivated
これも返したい場合は、AddMemberResult
既存のクライアントを壊すことなく、クラス内にそのプロパティを作成するだけです。