Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多租户和代码重复-如何通过;撰写;逻辑_C#_Asp.net_Architecture_Multi Tenant - Fatal编程技术网

C# 多租户和代码重复-如何通过;撰写;逻辑

C# 多租户和代码重复-如何通过;撰写;逻辑,c#,asp.net,architecture,multi-tenant,C#,Asp.net,Architecture,Multi Tenant,我有一个多租户应用程序,租户很少,每个租户都需要少量定制 我发现我们的许多代码库包含如下逻辑: public async Task<Banana> PeelBanana(Banana banana) { if (_tenant == Tenant.A){ NotifyMonkey(); } else if (_tenant == Tenant.B){ GetCoconut(); }

我有一个多租户应用程序,租户很少,每个租户都需要少量定制

我发现我们的许多代码库包含如下逻辑:

public async Task<Banana> PeelBanana(Banana banana)
    {
        if (_tenant == Tenant.A){
           NotifyMonkey();
        } else if (_tenant == Tenant.B){
           GetCoconut();
        }
        banana.FinishPeeling();
        return banana;
    }
公共异步任务PeelBanana(香蕉香蕉) { 如果(_tenant==tenant.A){ NotifyMonkey(); }else if(_tenant==tenant.B){ getcouch(); } 香蕉。完成的感觉(); 还香蕉; }
是否有某种模式可以解决这种情况,在这种情况下,我需要根据某些标准组合逻辑?

根据其他代码的组织,您可以使用以下方式:

public async Task<Banana> PeelBanana(Banana banana)
{
    _tenant.OnPeelBanana(banana);
    banana.FinishPeeling();
    return banana;
}
公共异步任务PeelBanana(香蕉香蕉) { _承租人:OnPeelBanana(香蕉); 香蕉。完成的感觉(); 还香蕉; } 并使用
租户
类的不同子类型。当然,这取决于
NotifyMonkey
之类的函数可以移动到那里,也可以从那里访问