Шаблон стратегии приходит на ум. Попробуйте разбить эти правила на серию «если это условие истинно, тогда идентификатор категории это». Сделайте каждый из них методом, затем добавьте эти методы в качестве делегатов в List<Func<ICollection<TeamWork>, ICollection<TeamWork>, bool>>
или сопоставимую индексированную коллекцию. Тогда ваш код SetCategoryId () выглядит так:
public void SetCategoryId(ICollection<TeamWork> Converted, ICollection<TeamWork> Sourced)
{
foreach(var categoryRule in CategoryRules)
{
var category = test(Converted, Sourced);
if(category != 0)
{
Converted.First().CategoryId = Sourced.First().CategoryId = category;
break;
}
}
}
Приведенный выше код никогда не будет изменяться независимо от того, сколько правил вы добавили или удалили. Однако, если у вас есть структура if - else if, ваша серия правил, вероятно, будет зависеть от порядка, поэтому будьте осторожны при настройке правил в списке.