После обновления 4.0.6 не работают правила


После обновления 4.0.6 не работают правила
Atom
28.11.2011


Доброго времени суток

После обновления на версию 4.0.6, перестал работать вот такой код

Код

this
   .When(CandleToken.CandlesStarted())
   .Do<IEnumerable<Candle>>(candles =>
   {
     var candle = candles.ElementAt(0);
   };


Код

Ошибка	1	Делегат "System.Func<StockSharp.Algo.Strategies.StrategyRule<System.Collections.Generic.IEnumerable<StockSharp.Algo.Candles.Candle>>,System.Collections.Generic.IEnumerable<StockSharp.Algo.Candles.Candle>,System.Collections.Generic.IEnumerable<StockSharp.Algo.Candles.Candle>>" не принимает "1" аргументов	C:\VS2010\AmBot\Strategy.cs	53	42	AmBot

Теги:


Спасибо:


1 2  >
esper

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


Попробуйте так
Код
this
   .When(CandleToken.CandlesStarted())
   .Do(candles =>
   {
     var candle = candles.ElementAt(0);
   };
Спасибо:

pehas

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


esper Перейти
Попробуйте так
Код
this
   .When(CandleToken.CandlesStarted())
   .Do(candles =>
   {
     var candle = candles.ElementAt(0);
   };


Какая-то ерунда. Если сделать так как в вашем примере, то candles - это не IEnumerable<candles>, а StrategyRule IEnumerable<candles>. Соответственно, когда ставишь после candles точку, студия показывает все методы и свойства StrategyRule. Хотя если навести на candles указатель мыши, показывает что candles имеет тип IEnumerable<candles>
Может в какие-то библиотеки конфликтуют после апдейта? (я не так давно знаком со студией, не уверен что такое возможно, но очень похоже)

Вот что я пользую



Спасибо:

pehas

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


Вот это еще интересно

Спасибо:

Alexander

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


Обновите все либы, перекомпилируйте проект.
всё очень смахивает на локальные баги
Спасибо:

Alexander

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


Проверил - всё работает как прежде. Нужно пересобрать всё локально
Проверял на таком примере:
Код
this
   .When(order.NewTrades())
   .Do(trades =>
   {
     var trade = trades.ElementAt(0);
   });
Спасибо:

pehas

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


Я новичек в с#. Не совсем понимаю, что значит пересобрать локально. Но, надеюсь, делаю правильно.
- Перезалил папку References,
- удалил obj и bin из проекта.
- Запустил проект,
- удалил из него все лишние юсинги и все ссылки.
- Добавил заново нужные ссылки из References.
- В меню отладка выбрал "пересобрать проект"

Если просто вставить ваш пример, то да ошибок не выдает (что уже плюс). Но если поставить точку после trades в теле Do, то все равно выдает методы StrategyRule в автокомплите. У вас нет?
Я приложил скрин, может проблема в этой перегрузке?

Спасибо:

Alexander

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


Он у вас подсказку выдаёт для метода Do.
candle тут не при чём.
Спасибо:

pehas

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


Alexander Mukhanchikov Перейти
Он у вас подсказку выдаёт для метода Do.
candle тут не при чём.


Подсказку я имею ввиду внутри Do {} а не на самом Do, как в первом моем скриншоте


Разве так должно быть? В версии 4.0.5 такого не было, выдавались методы для коллекции IEnumerable<Candle> ...
Спасибо:

Alexander

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


Убедили :)

Вот так работает:
Код
				this
					.When(order.NewTrades())
					.Do((t, trades) =>
					    	{
								var trade = trades.ElementAt(0);
					    	});
Спасибо: pehas

Mikhail Sukhov

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


У меня и вот такой работает:

Код
this
  .When(order.NewTrades())
  .Do(trades =>
  {
	trades.ElementAt(0);
  });
Спасибо:
1 2  >

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

loading
clippy