ServiceStack を使用して (できれば) RESTful API を開発しています。
私のサービスのほとんどが同じように見えることに気付きました。たとえば、GET メソッドは次のようになります。
try
{
Validate();
GetData();
return Response();
}
catch (Exception)
{
//TODO: Log the exception
throw; //rethrow
}
20 個のリソース、20 個のリクエスト DTO を取得したとしましょう。つまり、ほぼ同じテンプレートの約 20 個のサービスを取得したとします...
関連する動作を実装するだけの継承サービスを作成できるように、汎用または抽象サービスを作成しようとしましたが、要求 DTO がシリアル化に必要とされていなかったため、行き詰まりました。
それを行う方法はありますか?
編集:
私がやろうとしていることの例:
public abstract class MyService<TResponse,TRequest> : Service
{
protected abstract TResponse InnerGet();
protected abstract void InnerDelete();
public TResponse Get(TRequest request)
{
//General Code Here.
TResponse response = InnerGet();
//General Code Here.
return response;
}
public void Delete(TRequest request)
{
//General Code Here.
InnerDelete();
//General Code Here.
}
}
public class AccountService : MyService<Accounts, Account>
{
protected override Accounts InnerGet()
{
throw new NotImplementedException();//Get the data from BL
}
protected override void InnerDelete()
{
throw new NotImplementedException();
}
}