Я делаю некоторые скрипты Adobe InDesign. Их реализация COM действительно предназначена для VB, поэтому она не является строгой по отношению к сообщениям о типах данных, из-за чего иногда требуется использование динамики.
Я пытаюсь отладить фрагмент кода, который выглядит так:
foreach (dynamic pi in current.PageItems)
{
if (pi is TextFrame)
{
var frame = pi as TextFrame;
var str = frame.Contents.ToString();
Debug.WriteLine(str);
}
}
Это дает мне RuntimeBinderException следующим образом:
Дополнительная информация: Невозможно динамически вызывать метод 'WriteLine' потому что он имеет условный атрибут
Я понимаю, что проблема заключается в том, что с условными атрибутами версия кода, которая должна обрабатывать тип, который динамический разрешает во время выполнения, может быть скомпилирована, но я явно конвертирую то, что хочу отлаживать string, поэтому я не понимаю, почему это все еще происходит. Как я могу обойти эту проблему?