Se ho codice simile a questo (anche se forse non è limitato come livelli di avviso):
switch(item.StatusCode)
{
case StatusCode.SUCCESS:
CallSuccess(item);
break;
case StatusCode.WARNING:
CallWarning(item);
break;
case StatusCode.ERROR:
CallError(item);
break;
}
Spesso mi ritrovo a convertirlo in qualcosa di più simile a
var behaviors = new Dictionary<StatusCode, Action<Item>>
{
{StatusCode.SUCCESS, (item) => CallSuccess(item)},
{StatusCode.WARNING, (item) => CallWarning(item)},
{StatusCode.ERROR, (item) => CallError(item)},
}
behaviors[item.StatusCode](item);
Trovo che in molti casi questo rende il codice più gestibile. È un modello, in realtà aiuta come penso che faccia, e come si chiama?