В общем, вы не должны не должны сделать это - если тип был отмечен как внутренний, это означает, что вы не собираетесь использовать его снаружи сборки. Его можно удалить, изменить и т. Д. В более поздней версии.
Однако отражение делает позволяет получить доступ типов и член, которые не являются открытым - просто посмотрите на перегрузки, которые занимают BindingFlags
аргумент, и включают в себя BindingFlags.NonPublic
в флагах, которые вы проходите.
Если у вас есть полное имя типа (включая информацию о сборке), то необходимо только позвонить Type.GetType(string)
. Если вы заранее знаете сборку и знаете публичный тип внутри этой сборки, то, используя typeof(TheOtherType).Assembly
, чтобы получить ссылку на сборку, как правило, проще, вы можете позвонить Assembly.GetType(string)
.
@dattebayo: только полный ответ Джона, обратите внимание, что код должен работать в полном доверии, или размышления о непубличных членах будут fail –
Иногда вам просто нужно, пока он не сломается. У меня есть команда WPF 'DataGrid', параметром которой является' SelectedItems'. В команде параметр принимается как «объект», но это тип «SelectedCellCollection», который недоступен в моем коде. Мне нужен этот тип обмана в надежде направить параметр 'object' в' SelectedCellCollection'. – ProfK