我在用着
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\MyProgram"
作为存储我的程序使用的几个文件的路径。我想避免在我的应用程序中粘贴相同的代码片段。
我需要确保:
- 路径一旦设置就不会被意外更改
- 需要它的类可以访问它。
我考虑过:
- 使其成为单例
- 使用构造函数依赖注入
- 使用属性依赖注入
- 使用 AOP 在需要的地方创建路径。
每个都有优点和缺点。
单身汉是每个人最喜欢的鞭打男孩。我不反对使用一个,但如果可能的话,有充分的理由避免使用它。
我已经通过 Castle Windsor 大量使用构造函数注入。但这是一个路径字符串,Windsor 不能非常优雅地处理系统类型依赖关系。我总是可以将它包装在一个类中,但这对于像传递字符串值这样简单的事情来说似乎有点过头了。在任何情况下,此路由都会为每个使用它的类添加另一个构造函数参数。
在这种情况下,我看到的属性注入问题是,从设置值的位置到需要它的位置存在大量间接。我需要很长的中间人队伍才能到达使用它的所有地方。
AOP 看起来很有希望,我正计划使用 AOP 进行日志记录,所以这至少听起来像是一个简单的解决方案。
还有其他我没有考虑过的选择吗?我对我所考虑的选项的评估是否偏离了基础?