Заявленный тип a
- A
.
У A есть только два метода: один принимает A (и b и c являются экземплярами A), а другой - D (и ни b, ни c не являются экземплярами D).
Итак, первый метод соответствует, а второй нет. Таким образом, первый метод выбирается компилятором.
Этот метод переопределен в B, и конкретный тип a
- B, поэтому печатается «B и A».
Метод B.show(B)
не переопределяет метод A.show(A)
, поскольку он не принимает тот же тип, что и аргумент.
Я использовал совет от этой статьи для получения блока от GAC.
Вытащите DLL из GAC
DLLs однажды развертывается в GAC (обычно расположенный в c:\windows\assembly) can†™t просматриваться или использоваться в качестве нормального файла DLL. Они can†™t быть непосредственно сосланным из проекта VS. Разработчики обычно сохраняют копию исходного файла DLL и отсылают к нему в проекте при разработке (дизайн) время, которое использует блок от GAC во время времени выполнения проекта.
Во время выполнения (время выполнения), если блок, как находят, подписывается и развертывается в GAC, CLR автоматически поднимает блок с GAC вместо DLL, на который ссылаются в течение времени проектирования в VS. В случае, если разработчик удалил исходный DLL или не имеет его по некоторым причинам, существует способ получить файл DLL от GAC. Выполните следующие шаги для копирования DLL с GAC
Выполненный regsvr32/u C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\shfusion.dll
- shfusion.dll является расширением проводника DLL, который дает отличный взгляд папке GAC. Нерегистрация этого файла удалит средство просмотра кэша сборок, и папка GAC будет затем видима как любая нормальная папка в проводнике.
Открытый †œ % windir %\assembly\GAC_MSILâ€?.
Обзор к Вашей папке DLL в глубокое для нахождения DLL.
Скопируйте DLL где-нибудь на Вашем жестком диске и отошлите его оттуда в Вашем проекте
Выполненный "regsvr32%windir %\Microsoft.NET\Framework \<. СЕТЕВОЙ каталог версии> \shfusion.dll", чтобы потворить регистрацию файла shfusion.dll и возвратить исходное отличное представление GAC.
Простым способом я нашел, должен открыть командную строку и просмотреть папку, которую Вы упоминаете, пока Вы не находите DLL, который Вы хотите - Вы можете затем пользователь команда копии для вывода его. Windows Explorer имеет "полезное" специальное представление этой папки.
Метод, описанный здесь, очень легок:
Сводка от статьи:
\\YourServer\C$\Windows\Assembly
)Я думаю, что самый легкий путь состоит в том, чтобы сделать это через командную строку как упоминания David. Единственный прием - то, что .dll просто не расположен в C:\Windows\Assembly. Необходимо перейти к C:\Windows\Assembly\GAC\[ASSEMBLY_NAME]\[VERSION_NUMBER]_[PUBLIC KEY]. Можно затем сделать использование копии:
копия [ASSEMBLY_NAME] .dll c:\ (или безотносительно местоположения Вы хотите),
Надежда, которая помогает.
Да.
Добавьте ключ реестра DisableCacheViewer
Создайте новый dword ключ под HKLM\Software\Microsoft\Fusion\с именем DisableCacheViewer и установите it†™s [DWORD], оценивают 1.
Вернитесь к Windows Explorer к папке блока, и это будет нормальное представление файловой системы.
Это MSDN BLOG POST описывает три отдельных способа извлечения DLL из GAC. Полезное резюме методов до сих пор дано.
просто перейдите в C:\Windows найдите папку [assembly] щелкните правой кнопкой мыши и выберите добавить в архив
подождите немного
у вас есть архивный файл, содержащий все сборки в вашем GAC
Откройте командную строку и введите :
cd c:\windows\assembly\GAC_MSIL
xcopy . C:\GacDump /s /y
Это должно дать дамп всего GAC
Наслаждайтесь!
Еще одно направление - просто распакуйте MSI-файл и получите все полезности таким образом. Это спасет вас от возможной деинсталляции...