J'ai connu des cas où il serait utile de restreindre l'accès à l'API des bibliothèques et des cadres externes pour éviter des conséquences négatives dans le système.
Par exemple, dans une application SharePoint, il peut sembler naturel d'appeler spList.Items.GetItemById
pour obtenir un élément de liste, même peut-être en boucle, sans se rendre compte que cela peut entraîner d'énormes problèmes de performances.
Il se peut également que nous devions interdire l'utilisation de SmtpClient afin de forcer tout le monde à utiliser notre propre classe pour envoyer des e-mails, afin de garantir que nous pouvons correctement proxy et se moquer de tous les e-mails dans l'environnement de test.
Existe-t-il des moyens fiables et raisonnablement simples de respecter ces contraintes sur le code externe, sauf à partir de certains endroits spécifiques de notre propre code? Il n'est pas nécessaire d'empêcher absolument en toutes circonstances l'accès à ces méthodes / classes, par exemple par réflexion ou simplement par une sorte de désactivation, il devrait plutôt être un avertissement strict de ne pas les utiliser. Forcer de préférence le programmeur à prendre activement des mesures pour contourner ces contraintes si possible / nécessaire.