0

私の会社では、サービスの実装は基本的に、実際の処理を行うビジネス層にコールバックを渡すだけです。たとえば、次のようなサービス コントラクトがあるとします。

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();
        }
    }
}

これを作成する方法はありますか、それとも合理性のために怠けすぎているだけですか?

4

1 に答える 1