Я думаю, что Sun теперь консервативен и гарантирует, чтобы они приняли правильные решения после создания нескольких плохих.
, Кроме того, было большое политиканство и бездельничание, прежде чем Java 1.5 вышел. Многие компании использовали сторонние взломы как Универсальный Java, потому что эти функции базового языка не были доступны, но сильно желаемы.
я думаю, что они убыстрились снова, с тех пор 1.5, с 1,7 на горизонте, и похоже, что каждый из них обеспечил очень полезные новые возможности. Открытое определение источника языка хорошо также.
И независимо от того, что некоторые люди говорят, сохранение назад совместимости было очень важной функцией на языке Java.
я сказал бы, что.NET ударила задницы Sun в механизм, и что хорошо, что они оба существуют.
В общем, вы не должны делать это - если тип помечен как внутренний, это означает, что вы не должны использовать его извне сборки. В более поздних версиях его можно было удалить, изменить и т. Д.
Однако отражение действительно позволяет вам получить доступ к типам и членам, которые не являются общедоступными - просто найдите перегрузки, которые принимают BindingFlags
и включите BindingFlags.NonPublic
в передаваемые вами флаги.
Если у вас есть полное имя типа (включая информацию о сборке), тогда просто вызовите Type.GetType (string)
должен работать. Если вы знаете сборку заранее и знаете об общедоступном типе в этой сборке, используйте typeof (TheOtherType).
Для загрузки сборки и ввода, указанного в вашем примере:
Assembly design = Assembly.LoadFile(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll");
Type designHost = design.GetType("System.ComponentModel.Design.DesignerHost");