Код: Выделить всё
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
Спасибо, Орион
Подробнее здесь: https://stackoverflow.com/questions/295 ... hen-dealin
Мобильная версия