重构代码时,我经常碰到这种情况。说我有一个基类,我读了一些配置参数并将其填充到这样的属性中
public BaseClass()
{
_property1 = ConfigurationManager.AppSettings["AppSetting1"];
_property2 = ConfigurationManager.AppSettings["AppSetting2"];
_property3 = ConfigurationManager.AppSettings["AppSetting3"];
}
然后我在另一个这样的类中调用一个方法
OtherClass otherClass = new OtherClass();
var foo = otherClass.SomeMethod(_property1, _property2, _property3);
这样做更好吗?如果我仅需要OtherClass类内部的AppSettings值怎么办?那么我就可以将它们加载为私有道具,并在构造函数中对其进行初始化,并且引用类/调用者无需关心设置。
public OtherClass()
{
_property1 = ConfigurationManager.AppSettings["AppSetting1"];
_property2 = ConfigurationManager.AppSettings["AppSetting2"];
_property3 = ConfigurationManager.AppSettings["AppSetting3"];
}
我的实现将是
OtherClass otherClass = new OtherClass();
var foo = otherClass.SomeMethod();
这个让我很烦,但是我不确定为什么。哪种更好的做法,为什么呢?我很抱歉我缺少明显的东西。有时会发生大声笑。谢谢-弗兰克
我认为,这取决于您的课程目标。
如果class属于domain classes,则无需依赖ConfigurationManager
class。您可以创建一个构造函数并提供必要的数据:
public class FooClass()
{
public Property1 {get; private set;}
public FooClass(string property1)
{
Property1 = property1;
}
}
如果FooClass
属于Service Layer,那么在我看来,它有资格拥有对ConfigurationManager
类的依赖。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句