Интересный глюк с плугинами.
Интересный глюк с плугинами.
Словил новый глюк.
Код тот же, что Я постил для AlexNek недавно в топике по загрузке,
Вызов currentAssembly.GetTypes() вдруг перестал работать в половине случаев.
Т.е. Ассембля - грузится, есть имя и т.п, но как только требуется получить список типов - все отваливается.
Причем отваливается со странным сообщением об невозможности загрузить тип. На сам тип ссылки нет.
Test Name: TestMethod1
Test FullName: TimeCalculator.TimeCalculator.Tests.TTimeCalculator_Tests.TestMethod1
Test Outcome: Failed
Test Duration: 0:09:08.8491405
Result StackTrace:
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.Assembly.GetTypes()
at ProcessingInfo.PluginsHandler.TEquipmentHostProvider.GetAppPlugIns(List`1 assemblies)
....
Result Message:
Test method TimeCalculator.TimeCalculator.Tests.TTimeCalculator_Tests.TestMethod1 threw exception:
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Глюк - стабилен, перезаагрузка Стыдии и системы на него не влияют...
Дело, похоже, в следующем:
- Я переименовал одну из интерфейсных дллок
- все построилось с новой дллкой, но старая осталась в системе
- с чем именно линкуется проект пока не смотрел, но похоже что со старой дллкой.
Хотя... возможно, что не обновились дллки плугинов...
В общем - глюк...
В аттаче - проект с другим глюком - у виртуальных функций.
С удовольствием обсужу варианты обхода, кроме очевидного хранения с словаре объекта.
Как-то странно получается...
В пятницу - не работало.
Два дня выходных.
В понедельник - не знаю, не работал.
Сегодня - что-то работает.
А ведь в проекте ничего не менялось.
Народ пишет, что сталкивался с такой же ситуацией.
Решалось - введением в базовый класс дополнительного метода, вызывающего виртуальный метод.
По мне - вроде лишняя работа - тип объекта и так известен при получении делегата.
Но вот беда - не всегда работает...
Что смешно - починить вызов виртуального метода через делегат можно... добавив пустой комментарий в класс...
Да, вещи совершенно не связанные. Никак не связанные. Но тем не мение в классе с комментарием вызов делается корректно....