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


как получить объект события
Atom Reply
10/13/2011


Добрый день!

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


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

public StrategyRule Do<TArg>(
Action<TArg> action
)


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

protected void Activate(
Object value
)


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

Tags:


Thanks:




8 Answers
Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 10/13/2011
Reply


Код
this
   .When(order.Matched())
   .Do<Order>(MatchedOrder);
Thanks: avkar

avkar

Avatar
Date: 10/14/2011
Reply


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

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 10/14/2011
Reply


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


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

avkar

Avatar
Date: 10/14/2011
Reply


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

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 10/15/2011
Reply


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


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

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

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

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 10/16/2011
Reply


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


Залили.
Thanks:

avkar

Avatar
Date: 10/20/2011
Reply


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

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 10/20/2011
Reply


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


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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy