Множество первых исключений Microsoft.CSharp.RuntimeBinderException, возникающих при работе с динамикой.C#

Место общения программистов C#
Ответить
Anonymous
 Множество первых исключений Microsoft.CSharp.RuntimeBinderException, возникающих при работе с динамикой.

Сообщение Anonymous »

У меня есть стандартный класс типа «динамический словарь» в C# —

Код: Выделить всё

class Bucket : DynamicObject
{
readonly Dictionary m_dict = new Dictionary();

public override bool TrySetMember(SetMemberBinder binder, object value)
{
m_dict[binder.Name] = value;
return true;
}

public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return m_dict.TryGetValue(binder.Name, out result);
}
}
Теперь я называю это так:

Код: Выделить всё

static void Main(string[] args)
{
dynamic d = new Bucket();
d.Name = "Orion"; // 2 RuntimeBinderExceptions
Console.WriteLine(d.Name); // 2 RuntimeBinderExceptions
}
Приложение делает то, что вы от него ожидаете, но результаты отладки выглядят следующим образом:

Первое исключение типа «Microsoft.CSharp.RuntimeBinder.RuntimeBinderException» произошло в Microsoft.CSharp.dll
Первое исключение типа «Microsoft.CSharp.RuntimeBinder.RuntimeBinderException» произошло в Microsoft.CSharp. dll
«ScratchConsoleApplication.vshost.exe» (управляемый (v4.0.30319)): загружена «анонимно размещенная сборка DynamicMethods»
В Microsoft произошло первое исключение типа «Microsoft.CSharp.RuntimeBinder.RuntimeBinderException». .CSharp.dll
В Microsoft.CSharp.dll произошло первое исключение типа «Microsoft.CSharp.RuntimeBinder.RuntimeBinderException».


< em>Любая попытка доступа к динамическому члену, похоже, выводит исключение RuntimeBinderException в журналы отладки. Хотя я осознаю, что исключения первого шанса сами по себе не являются проблемой, у меня это вызывает некоторые проблемы:
  • Когда я пишу приложения WPF, я часто настраиваю отладчик на «прерывание исключений», иначе все исключения в конечном итоге преобразуются в DispatcherUnhandledException, и вся необходимая информация теряется. WPF такой отстой.
  • Как только я нажимаю на любой код, использующий динамический, журнал вывода отладки становится совершенно бесполезным. Все полезные строки трассировки, которые меня волнуют, скрыты среди всех бесполезных исключений RuntimeBinderException
Есть ли там как-нибудь я могу это отключить, или RuntimeBinder, к сожалению, просто так устроен?

Спасибо, Орион

Подробнее здесь: https://stackoverflow.com/questions/295 ... hen-dealin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»