Zetknąłem się z przypadkami, w których cenne byłoby ograniczenie dostępu do API zewnętrznych bibliotek i frameworków, aby zapobiec negatywnym konsekwencjom w systemie.
Na przykład w aplikacji SharePoint może wydawać się naturalne, że można wywołać spList.Items.GetItemById
element listy, nawet w pętli, nie zdając sobie sprawy, że może to prowadzić do ogromnych problemów z wydajnością.
Może się również zdarzyć, że musimy zabronić korzystania z SmtpClient, aby zmusić wszystkich do korzystania z naszej klasy do wysyłania wiadomości e-mail, aby zapewnić, że możemy właściwie proxy i kpić z wszystkich wiadomości e-mail w środowisku testowym.
Czy istnieją jakieś niezawodne i dość proste sposoby na osiągnięcie tych ograniczeń w kodzie zewnętrznym, z wyjątkiem określonych miejsc w naszym własnym kodzie? Nie jest absolutnie konieczne, by w każdych okolicznościach uniemożliwiać dostęp do tych metod / klas, na przykład poprzez refleksję lub po prostu wyłączenie, powinno być raczej surowym ostrzeżeniem, że nie należy ich używać. Najlepiej wymuszając na programiście aktywne podjęcie działań w celu ominięcia tych ograniczeń, jeśli to możliwe / potrzebne.