私は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 が発生します。
追加情報: Conditional 属性があるため、メソッド 'WriteLine' を動的に呼び出すことはできません
問題は、条件付き属性を使用すると、実行時に動的に解決される型を処理する必要があるコードのバージョンがコンパイルされている可能性があることですが、デバッグしたいものを明示的に文字列に変換しているため、なぜこれがまだ起こっているのかわかりません。この問題を回避するにはどうすればよいですか?