C# 来自设置的C对象

C# 来自设置的C对象,c#,xml,settings,config,code-injection,C#,Xml,Settings,Config,Code Injection,设计以下应用程序的适当方法是什么: 我有一些IAlgorithm对象,每个对象都有自己的设置。显然,我想将设置存储在一些设置文件中,最简单的方法是使用app.config 现在,我有一个注入方案,其中使用算法的对象按以下方式设置: 然后将它们传递到对象绑定中 尽管如此,我认为这里可以做一些更好的事情,但我想不出来 有个很好的主意,有什么帮助吗 将不胜感激 还有,有什么替代方案 此类应用程序的app.config用法 案例 您可以使用app.config,但可以让单个alorithm类型为其设置进

设计以下应用程序的适当方法是什么:

我有一些IAlgorithm对象,每个对象都有自己的设置。显然,我想将设置存储在一些设置文件中,最简单的方法是使用app.config

现在,我有一个注入方案,其中使用算法的对象按以下方式设置:

然后将它们传递到对象绑定中

尽管如此,我认为这里可以做一些更好的事情,但我想不出来 有个很好的主意,有什么帮助吗 将不胜感激

还有,有什么替代方案 此类应用程序的app.config用法 案例


您可以使用app.config,但可以让单个alorithm类型为其设置进行选择。从算法代码中,即使在另一个dll中声明,ConfigurationManager始终指向当前应用程序配置文件。

为什么不将这些设置序列化为XML文件?将一组这样的XML附加到您的项目中或作为资源嵌入,然后使用标准的XML反序列化机制?@Bashir yes,这就是我声称的显而易见的解决方案app.config也是一个XML文件,然而,我的大脑一直告诉我,这不是解决这个问题的最佳方法。我想在注入反序列化方案方面可以做得更好。对于所使用的注入方案,实现此设置的最佳方法是什么?我不明白这会对IoC产生什么影响,只需从algo实现内部使用ConfigurationManager.AppSettings读取设置
Bind<IAlgorithm>.To(new SimpleAlgoritm(simpleAlgorithmSettings));
Bind<IAlgorithm>.To(new ComplicatedAlgoritm(complicatedAlgorithmSettings));
var simpleAlgorithmSettings = DeserializeSimpleAlgorithmSettingsFromConfigFile();