Отладка динамически созданного класса в Visual Studio и C#

#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. Как бы я поместил это в код, который генерируется во время выполнения?