Existe-t-il un modèle que je pourrais appliquer pour refactoriser ce code? La seule différence entre les deux méthodes est que cette méthode prend un paramètre supplémentaire et le transmet au délégué?Méthodes de refactorisation invoquant des delgates avec différentes signatures de paramètres
J'ai découvert que les délégués ne peuvent pas prendre de signatures de méthodes surchargées. Comment pourrais-je ajouter un niveau supplémentaire d'indirection? :)
public static void ProcessFolder(
ProcessFolderDelegate processFolderDelegate
)
{
using (var esb = ExchangeService.GetExchangeServiceBinding())
{
var contactFolder = FolderService.GetPublicFolder(esb,
Properties.Settings.Default.ExchangePublicFolderName);
processFolderDelegate(esb, contactFolder);
}
}
public static void ProcessContact(
ProcessContactDelegate processContactDelegate,
Contact contact //extra param
)
{
using (var esb = ExchangeService.GetExchangeServiceBinding())
{
var contactFolder = FolderService.GetPublicFolder(esb,
Properties.Settings.Default.ExchangePublicFolderName);
processContactDelegate(esb, contactFolder, contact); //extra param
}
}
Je suis d'accord. La réplication dans les deux méthodes semble être une odeur de code, mais je ne m'inquiéterais pas avec des méthodes aussi petites. –