#c# #.net #visual-studio #debugging #dynamic-class
#c# #.net #visual-studio #отладка #динамический класс
Вопрос:
В моем проекте используется библиотека, которая, в свою очередь, используется Microsoft.Practices.Unity
для динамического создания класса и запуска некоторых его методов. Этот класс выдает ошибку после его создания.
Возможно ли мне использовать отладчик Visual Studio для перехода и отладки этого динамического класса? У меня есть Reflector Pro, который позволил мне копать так далеко, как у меня есть.
Примечание: я уже пытался связаться с разработчиком библиотеки, которую я использую, и они, похоже, не желают решать эту проблему в настоящее время. Поэтому я пытаюсь разобраться в этом сам.
Обновить
Я не имею в виду ключевое слово dynamic. Верхняя строка трассировки стека
DynamicModule.ns.Wrapped_OpenAccessMetaDataProvider_bf5ed2b8ccd24dacab4923be24786366.Initialize(String providerName, NameValueCollection config, Type managerType) 506
Поиск в Google DynamicModule.ns.Wrapped_
приводит к InterfaceInterceptorClassGenerator
классу Unity. Этот класс, по-видимому, имеет смысл, учитывая, что он «используется для создания прокси-классов …». У меня возникли проблемы с поиском подходящего примера кода, потому что, похоже, вокруг построения этого класса существует значительная структура OO.
ОБНОВЛЕНИЕ 2
Класс unity выдает исключение:
Невозможно загрузить один или несколько запрошенных типов. Извлеките свойство LoaderExceptions для получения дополнительной информации.
У исключения не было LoaderExceptions
свойства, так что это не помогает. Я не хотел углубляться в детали вопроса, но вкратце это так: моя CMS (которая останется безымянной) использует устаревшую версию Facebook C # SDK. При обновлении сборок Facebook SDK выдается эта ошибка. Это имеет смысл, потому что SDK изменился. Я пытаюсь понять связь между классом OpenAccessMetaDataProvider и SDK Facebook.
Комментарии:
1. Можете ли вы показать нам какой-либо исходный код, который показывает, как вы создаете класс и вызываете его методы?
2. Вы имеете в виду объект, который является
dynamic
(ключевое слово), или анонимный класс?3. @GalacticCowboy Нет, не ключевое слово dynamic. Пожалуйста, смотрите Мою правку для уточнения.
4. @JGWeissman Конструкция этого объекта и совокупность его членов распределены по многим классам, которые я сейчас просматриваю. Похоже, что Unity InterfaceInterceptorClassGenerator — это класс, который выполняет фактическую конструкцию. Надеюсь, это поможет.
5. Какое выполнение запускает созданный unity класс?
Ответ №1:
Я не эксперт по динамическим классам, но попробуйте System.Диагностика.Отладчик.Break() …
Комментарии:
1. Как бы я поместил это в код, который генерируется во время выполнения?