как получить объект события
Atom
13.10.2011
avkar


Добрый день!

При реализации событийной модели в своей стратегии столкнулся с невозможностью получить объект, инициализировавшее событие, в его обработчике. На моем примере, это выглядит так у меня по определенным условиям генерятся заявки, и мне нужно при их исполнении произвести некоторые расчеты c объемом и ценой, для чего в моем обработчике MatchedOrder нужно получить ссылку на исполненную заявку. Событие вызывается так this .When(order.Matched()) .Do(MatchedOrder);

Как можно в обработчике MatchedOrder получить ссылку на исполненный ордер? Вроде бы есть возможность передать в обработчик объект, если реализовать его как

public StrategyRule Do( Action action )

, но метод позволяющий передать туда объект защищен

protected void Activate( Object value )

Хорошо было бы для стандартных событий реализовать Do, например, для Matched() реализовать свой Do,с передачей в него ссылки на исполнившуюся заявку.


Теги:


Спасибо:


Mikhail Sukhov

Фотография
Дата: 14.10.2011
Ответить


this
   .When(order.Matched())
   .Do<Order>(MatchedOrder);
Спасибо: avkar

avkar

Фотография
Дата: 14.10.2011
Ответить


Спасибо большое. И как пожелание, неплохо было бы добавить в документацию такую информацию, а то не ясно какие формы обработчиков предусмотрены для стандартных событий.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 14.10.2011
Ответить


avkar: Спасибо большое. И как пожелание, неплохо было бы добавить в документацию такую информацию, а то не ясно какие формы обработчиков предусмотрены для стандартных событий.

Вы можете сами внести изменения в документацию.

Спасибо:

avkar

Фотография
Дата: 14.10.2011
Ответить


А как? Для этого нужен доступ к файлам документации и как минимум к сигнатурам реализованных обработчиков. А так, я двумя руками ЗА.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.10.2011
Ответить


avkar: А как? Для этого нужен доступ к файлам документации и как минимум к сигнатурам реализованных обработчиков. А так, я двумя руками ЗА.

  1. Сделать логин на CodePlex и сказать его.
  2. Скачать через TFS исходники, где в папке Documents находится документация.
  3. Установить Sandcastle + SHFB.
  4. Через SHFB отредактировать файлы доки.
  5. Залить ее на CodePlex.

Сегодня переправил правила, и теперь появлась generic версия StrategyRule (зальем на днях на CodePlex). Обработчик в методе Do у него сможет принимать только тот тип, что указан в StrategyRule. Поэтому неправильная сигнатура будет определяться уже на этапе компиляции. Собственно, так можно будет и увидеть, что может принимать Do.

Будет великолепно если опишите этот момент. Будет еще великолепнее, если опишите подробнее, как создавать свои правила и как их использовать. Жаловались на скудное описание. В чем-то согласен.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 17.10.2011
Ответить


Mikhail Sukhov: Сегодня переправил правила, и теперь появлась generic версия StrategyRule (зальем на днях на CodePlex).

Залили.

Спасибо:

avkar

Фотография
Дата: 20.10.2011
Ответить


Я зарегистрировался на codeplex под ником avkar. Добавьте, пожалуйста, меня в группу.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 20.10.2011
Ответить


avkar: Я зарегистрировался на codeplex под ником avkar. Добавьте, пожалуйста, меня в группу.

Мы регистрируем только помощников.

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy