При попытке найти тип (обычно класс) во время выполнения, если имя передано
Type.GetType(string typeName, bool throwOnError = True)
Перегрузка не может быть обнаружена, исключение - TypeLoadException.
Я понимаю, что за этим стоит мысль о том, что CLR считает, что проблема в том, что мы (еще) не загрузили (или любую) сборку, которая содержит искомый тип, но, как я думаю, проблема заключается в том, что проблема является то, что CLR не может найти класс по его имени. (Конечно, название могло быть написано неправильно.)
Похоже, у меня есть два варианта, если я хочу сообщить клиентам моего ориентированного на рефлексию инструмента define-code-at-runtime, что запрошенный ими класс не найден - либо сообщить им с помощью TypeLoadException, либо определить мое собственное исключение ClassNotFoundException.
Я нашел эту ссылку , которая дает (по-видимому, хорошую и, безусловно, полную) информацию о создании пользовательских классов исключений (в C #), но это довольно много работы для (правильной реализации) такой простой идеи.
Похоже, что я также хочу создать что-то, что знает имена сборок общих классов (или их пространства имен), которые, я думаю, мои клиенты, возможно, захотят использовать, чтобы я мог загрузить соответствующую сборку, если / когда мой пользователь просит класс, который находится в довольно известной, но еще не загруженной сборке. Это также, кажется, feechur, который BCL вполне мог бы обеспечить для нас. (Полагаю, для этого и нужно событие AppDomain.TypeResolve, но я собираюсь задать отдельный вопрос, чтобы попытаться найти легкодоступную и расширяемую реализацию этой концепции.)
А пока я спрошу еще раз - почему ClassNotFoundException еще не определено?