При создании библиотеки я должен убедиться, что закрытые методы должны работать, как и ожидалось, при вызове не другими методами того же класса, а другой библиотекой через отражение ?
Например, если частный метод private DoSomething(int number)ожидает, что:
numberявляется положительным ненулевым целым числом, и:- закрытая переменная
string abcне является пустой и не пустой строкой,
и совершенно, безобразно терпит неудачу, если эти два условия не совпадают, я должен обработать эти сбои, даже если я знаю, что все методы в классе всегда будут присваивать непустое значение abcперед вызовом DoSomethingи передавать положительное ненулевое целое число этому метод?
Другими словами, можно ли считать код, который не защищен от небезопасных вызовов посредством отражения, кодом низкого качества , или он принадлежит вызывающей стороне, которая использует отражение, чтобы гарантировать, что вызов ничего не нарушает?
Примечание: мой вопрос касается только стандартного набора библиотек. Это не распространяется на код, который должен быть в высшей степени безопасным (то есть когда кто-то может заинтересоваться использованием отражения, чтобы заставить его вести себя неожиданно или аварийно завершать работу).
¹ Поскольку класс правильно задокументирован, потому что существует достаточно модульных тестов, чтобы быть уверенным, что любой другой разработчик не сломает этот метод и т. Д.