как получить объект события
Atom Ответить
13.10.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>,с передачей в него ссылки на исполнившуюся заявку.

Теги:


Спасибо:




8 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.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

Фотография
Автор статей Программист Трейдер
Дата: 16.10.2011
Ответить


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


Залили.
Спасибо:

avkar

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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.10.2011
Ответить


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


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


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

loading
clippy