使用 LINQ 读取 app.config
我已经实现了(使用 System.Configuration 命名空间)并配置了下一个 App.config 结构:
<bot>
<strategies>
<add name="TestStrategy" type="Bot.Strategy.Test" >
<indicators>
<add name="Foo" type="Bot.Indicators.Foo, Bot" />
<add name="Bar" type="Bot.Indicators.Bar, Bot" />
</indicators>
<orders>
<add id="123" amount="0.1" />
</orders>
</add>
</strategies>
</bot>
对于下一个类:
class TestStrategy : IStrategy
{
public TestStrategy(IEnumerable<IIndicator> indicators, IEnumerable<Order> orders) { }
}
interface IIndicator { }
class Order
{
public int ID { get; set; }
public double Amount { get; set; }
}
那么我如何读取我的 App.config 来实例化 IEnumerable
使用 LINQ 使用适当的 IEnumerable
和 IEnumerable
调用每个的构造函数?
我已经有了下一个:
var section = ((BotSection)ConfigurationManager.GetSection("bot"));
return from strategy in section.Strategies
let strategyType = Type.GetType(strategy.Type)
where !strategyType.IsInterface && !strategyType.IsAbstract && typeof(IStrategy).IsAssignableFrom(strategyType)
select (IStrategy)Activator.CreateInstance(strategyType, ?);
I have implemented (using System.Configuration
namespace) and configured next App.config
structure:
<bot>
<strategies>
<add name="TestStrategy" type="Bot.Strategy.Test" >
<indicators>
<add name="Foo" type="Bot.Indicators.Foo, Bot" />
<add name="Bar" type="Bot.Indicators.Bar, Bot" />
</indicators>
<orders>
<add id="123" amount="0.1" />
</orders>
</add>
</strategies>
</bot>
for next classes:
class TestStrategy : IStrategy
{
public TestStrategy(IEnumerable<IIndicator> indicators, IEnumerable<Order> orders) { }
}
interface IIndicator { }
class Order
{
public int ID { get; set; }
public double Amount { get; set; }
}
So how can I read my App.config to instantiate IEnumerable<IStrategy>
calling the constructor of each with appropriate IEnumerable<IIndicator>
and IEnumerable<Order>
using LINQ?
I have already next:
var section = ((BotSection)ConfigurationManager.GetSection("bot"));
return from strategy in section.Strategies
let strategyType = Type.GetType(strategy.Type)
where !strategyType.IsInterface && !strategyType.IsAbstract && typeof(IStrategy).IsAssignableFrom(strategyType)
select (IStrategy)Activator.CreateInstance(strategyType, ?);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的 BotSection 定义正确,您可以执行以下操作(注意子查询):
If your
BotSection
is defined correctly, you can do this (note the sub queries):