He experimentado casos en los que sería valioso restringir el acceso a la API de bibliotecas y marcos externos para evitar consecuencias negativas en el sistema.
Por ejemplo, en una aplicación de SharePoint puede parecer natural llamar spList.Items.GetItemById
para obtener un elemento de la lista, incluso tal vez en un bucle, sin darse cuenta de que esto puede conducir a grandes problemas de rendimiento.
También podría ser que debamos prohibir el uso de SmtpClient para obligar a todos a usar nuestra propia clase para enviar correos electrónicos, para asegurarnos de que podamos usar proxy y burlarnos de todos los correos electrónicos en el entorno de prueba.
¿Hay alguna forma confiable y razonablemente directa de lograr estas restricciones en el código externo, excepto desde ciertos lugares específicos en nuestro propio código? No es necesario, bajo ninguna circunstancia, impedir el acceso a estos métodos / clases, por ejemplo, por reflexión o simplemente por algún tipo de deshabilitación, más bien debería ser una advertencia estricta de que no deberían usarse. Preferiblemente, forzar al programador a tomar medidas activas para anular estas restricciones si es posible / necesario.