Имеется следующая проблема
Допустим имеется класс-правило MyStrategyRuleClass унаследованное от StrategyRule если использовать this.When(this.MayStrategyRule).Do<AnyType>((e) => ) и в классе MyStrategyRuleClass при вызове base.Activate(NOTAnyType) передать по ошибке другой тип, то никаких ошибок не последут, выполнится override метод MyStrategyRuleClass.DisposeManaged() и правило перестанет работать
Думаю стоит должным образом обрабатывать подобную ошибку в реализации base.Activate() и Do(), чтобы генерировалось исключение
Kommentare (11)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Strategy.OnError + ITrader.ProcessDataError?
Так вы саме обрабатываете событие OnError и ProcessDataError и реагируете как хотите. Останавливать работу приложения из-за ошибки внутри стратегии - не лучшая затея. Даже без имхо :)
Если в стратегии возникают несовпадения типов, то это стратегия написана с критической ошибкой и программа не должна исполняться дальше. Несовпадение типов в C# в случае, когда нет возможности оповестить об этом на этапе компиляцмм, всегда вызывает исключение на этапе исполнения. Это не логическая ошибка, чтобы ее ловить Strategy.OnError + ITrader.ProcessDataError. И я слабо представляю себе ситуации, когда несовпадение типов заложено в логику исполнения программы намеренно... - если уж это делается намеренно, то и не забывается про try catch().
Вы не поняли. Исключение генерируется и оно перехватывается OnError и ProcessDataError. Обрабатывайте его там дальше как вам угодно. Хотите - делайте throw, хотите - перезагружайте стратегии. Всё зависит от вас.
Распишите по подробнее вашу концепцию.
Мне кажется обработку ошибок обращения к данным надо отдать в руки разработчика. Тем более обрабатывать такие смешные явные ошибки как int i = "строка" (как в данном случае) вообще нет смысла. их надо ловить на этапе выявления и однозначно останавливать ход выполнения программы.
Оборачивайте код в try catch. Или еще как-то. S# тут при чем?
по .ProcessDataError пришла ошибка (до установки версии S# 4.00 ее не было)
где ее искать, не подскажете?
Так, это бага у нас. Будем заливать фикс на КодеПлекс.