我有大约 20 个具有几乎相同模式的函数,我在 Sites 数组上运行,使用 Site 对象创建 SiteOperation 并执行一些操作(在这种情况下使用一个参数,但有时没有或更多)
int wantedBandwidthInLBps = 2048 / 8;
foreach (Sites site in _sitesManagement.GetAll())
{
SiteOperation siteOperation = new SiteOperation(site);
siteOperation.LimitBandwidth(wantedBandwidthInLBps);
}
foreach (Sites site in _sitesManagement.GetAll())
{
SiteOperation siteOperation = new SiteOperation(site);
siteOperation.KillJames();
}
foreach (Sites site in _sitesManagement.GetAll())
{
SiteOperation siteOperation = new SiteOperation(site);
siteOperation.FlyToMoon(2012, new TaskIdentifier(10,20));
}
是否可以包装此代码,所以我将只发送操作让我们说 _sitesManagement 它将在所有站点上运行此操作?
最佳答案
试试这个:
void PerformOperationOnAllSites(Action<SiteOperation> doIt) {
foreach (Sites site in _sitesManagement.GetAll()) {
SiteOperation siteOperation = new SiteOperation(site);
doIt(siteOperation);
}
}
...
_sitesManagement.PerformOperationOnAllSites(op => op.LimitBandwidth(wantedBandwidthInLBps));
_sitesManagement.PerformOperationOnAllSites(op => op.KillJames());
_sitesManagement.PerformOperationOnAllSites(op => op.FlyToMoon(2012, new TaskIdentifier(10,20));
关于c# - 相似函数重构模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897321/