Отражение чрезвычайно полезно, однако оно может потерпеть неудачу и по более практическим причинам.
Это случилось со мной совсем недавно в веб-приложении MVC (Castle MVC, Windsor, Brail & Boo). Когда скрипт boo компилирует и получает доступ к списку из пакета свойств, он использует отражение, чтобы идентифицировать подпись MyModel, чтобы он мог затем ссылаться на атрибуты для представления.
В этом случае отражение не удалось в том случае, если более старые записи базы данных MyModel больше не синхронизировались с новой моделью, поскольку старые данные имели нулевые значения для некоторых новых атрибутов или свойств MyModel. Это не было проблемой для новых записей, которые имели значения в новых полях атрибутов.
Как общее практическое правило, я бы зарегистрировал вашу сборку как зависимость и поместил пространство имен в ваше предложение using. Это дает компилятору четкие цепочки зависимостей при компиляции. Это также облегчает другим разработчикам определять, от чего зависит конкретная библиотека, вместо того, чтобы перебирать кучу кода, чтобы найти скрытый вызов Assembly.Reflection.OnLoad для внешней библиотеки DLL.
Кроме того, если вы ожидаете, что ваш ResourceManager сильно изменится, вам следует подумать о том, чтобы полностью разделить его на отдельную dll. (В соответствии с принципами SOLID OOP Design). Это делает ваше приложение более модульным, и если вам когда-либо понадобится обновить сборку ресурсов, вы перекомпилируете только те библиотеки, на которые это влияет.
Дядя Боб - Принципы ООД (ТВЕРДЫЕ)