Jak mogę używać Debug.Write z dynamicznymi danymi?
Robię skrypty Adobe InDesign. Ich implementacja COM jest naprawdę zaprojektowana dla VB, więc nie jest rygorystyczne w odniesieniu do raportowania typów danych, czasami wymagając użycia dynamiki.
Próbuję debugować fragment kodu, który wygląda tak:
foreach (dynamic pi in current.PageItems)
{
if (pi is TextFrame)
{
var frame = pi as TextFrame;
var str = frame.Contents.ToString();
Debug.WriteLine(str);
}
}
Daje mi to wyjątek RuntimeBinderException w następujący sposób:
Dodatkowe informacje: Nie można dynamicznie wywoływać metody „WriteLine”, ponieważ ma atrybut warunkowy
Rozumiem, że problem polega na tym, że w przypadku atrybutów warunkowych wersja kodu, która musi obsługiwać typ, w którym dynamika rozwiązuje się w czasie wykonywania, mogła zostać skompilowana, ale jawnie konwertuję to, co chcę debugować, na łańcuch, więc Nie rozumiem, dlaczego tak się dzieje. Jak mogę obejść ten problem?