我有下一个LINQ查询来读取App.config以使用内部声明的完全限定类型实例化对象:
var strategies = from strategy in section.Strategies let indicators = ( from indicator in strategy.Indicators select (IIndicatorReader)Activator.CreateInstance(Type.GetType(indicator.Type),bot.Mt,section.Symbol)) let orders = ( from order in strategy.Orders select new OrderInfo(order.Id,order.Operation.Value,order.Amount)) select (IStrategy)Activator.CreateInstance(Type.GetType(strategy.Type),section.Symbol,strategy.Amount,strategy.Limit,indicators,orders);
所以每次在我打电话的策略里面
indicatorList.Select(i => i.Operation)
这种实例化发生:
(IIndicatorReader)Activator.CreateInstance(Type.GetType(indicator.Type),section.Symbol))
但是首先在App.config中声明的指示符被实例化两次,所有其他 – 一次.怎么会这样??我很乐意提供所需的任何其他信息.
我的指标集:
public class IndicatorElementCollection : ConfigurationElementCollection,IEnumerable<IndicatorElement> { ... public new IEnumerator<IndicatorElement> GetEnumerator() { return this.OfType<IndicatorElement>().GetEnumerator(); } }
GetEnumerator()从非泛型转换为泛型的实现取自this question on SO.
另一个实现:
foreach (OrderElement element in (System.Collections.IEnumerable)this) { yield return element; }
以同样的方式工作.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。