Почему вы не можете извлечь из них? Оба типа (Сборка и Модуль) имеют защищенный конструктор, который будет доступен для вашего производного типа. Сами типы являются общедоступными, поэтому нет проблем с тем, чтобы он был менее видимым, чем фактический спецификатор.
Следующий код компилируется просто отлично
public class MyAssembly : System.Reflection.Assembly {
public MyAssembly() : base() {}
}
Что касается того, почему у них нет публичных конструкторов. Я не имею непосредственного знания об этом, но кажется ясным, что они хотели заставить людей извлекать уроки из этих классов. Это кажется странным, учитывая, что у них нет абстрактных членов. Единственное, о чем я могу думать, - это проблема версий, но никакая логика, которая стоит за этим, сейчас не приходит мне в голову.
EDIT
После того, как я прочитал комментарий 280Z28, я проверил, и да, это ново для .Net 4.0. До 4.0 конструктор для сборки и модуля был внутренним, и оба типа были бетонными, но не герметичными. Таким образом, вывод до версии 4.0 невозможен без каких-либо пороков с полностью доверенным кодом.