私の会社では、サービスの実装は基本的に、実際の処理を行うビジネス層にコールバックを渡すだけです。たとえば、次のようなサービス コントラクトがあるとします。
public interface IService
{
void ServiceMethod1(string a, object b);
int ServiceMethod2(int a, int b);
}
私たちのサービスは次のようになります。
public class Service : IService
{
private ServiceBL _serviceBL;
public Service()
{
_serviceBL = new ServiceBL();
}
public void ServiceMethod1(string a, object b)
{
_serviceBL.ServiceMethod1(a, b);
}
public int ServiceMethod2(int a, int b)
{
return _serviceBL.ServiceMethod2(a, b);
}
}
これはかなり繰り返しになるので、コントラクトに基づいてサービス メソッド自体を発行する、作成できる基本クラスがあるかどうか疑問に思っています。コードは次のようになると思います。
public abstract class MagicServiceBase<T>
{
protected dynamic InterfaceImplementor { get; }
public MagicServiceBase()
{
// Magic that makes the methods defined in T real.
}
}
public class Service : MagicServiceBase<IService>, IService
{
protected override dynamic InterfaceImplementor
{
get
{
return new ServiceBL();
}
}
}
これを作成する方法はありますか、それとも合理性のために怠けすぎているだけですか?