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


После обновления 4.0.6 не работают правила
Atom
11/28/2011


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

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

Code

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


Code

Ошибка	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

Tags:


Thanks:


1 2  >
esper

Avatar
Date: 11/28/2011
Reply


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

pehas

Avatar
Date: 11/29/2011
Reply


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


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

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



Thanks:

pehas

Avatar
Date: 11/29/2011
Reply


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

Thanks:

Alexander

Avatar
Date: 11/29/2011
Reply


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

Alexander

Avatar
Date: 11/30/2011
Reply


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

pehas

Avatar
Date: 11/30/2011
Reply


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

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

Thanks:

Alexander

Avatar
Date: 11/30/2011
Reply


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

pehas

Avatar
Date: 11/30/2011
Reply


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


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


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

Alexander

Avatar
Date: 11/30/2011
Reply


Убедили :)

Вот так работает:
Code
				this
					.When(order.NewTrades())
					.Do((t, trades) =>
					    	{
								var trade = trades.ElementAt(0);
					    	});
Thanks: pehas

Mikhail Sukhov

Avatar
Date: 11/30/2011
Reply


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

Code
this
  .When(order.NewTrades())
  .Do(trades =>
  {
	trades.ElementAt(0);
  });
Thanks:
1 2  >

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

loading
clippy