App.Config
<appSettings>
<add key="maxDiscount" value="25"/>
</appSettings>
这是我的CustomerConfig.cs
public class CustomerConfig
{
private static int GetValue(string key)
{
return Convert.ToInt16(ConfigurationManager.AppSettings[key]);
}
public static int MaxDiscount
{
get
{
return GetValue("maxDiscount");
}
}
服务类
public class CustomerService : ICustomer
{
private readonly int _maxDiscount;
public CustomerService()
{
//the value is NOT reflecting here
_maxDiscount = CustomerConfig.MaxDiscount;
//watching at this line I see _maxDiscount = 0
}
}
注意: - 以上所有类都在同一层(类库项目) 而下面的控制器在另一层(UI层)
MVC控制器。
public class SomeController : Controller
{
private readonly int _maxDiscount;
public SomeController()
: base()
{
//here the value 25 is reflecting
_maxDiscount = CustomerConfig.MaxDiscount;
}
}
为什么maxDiscount的值没有反映在服务层?
造成这种情况的原因是什么?我如何获取服务层中的值??
答案 0 :(得分:1)
EnrollmentService
将从正在执行的程序集配置文件中加载配置。在您的方案中,它将是ConfigurationManager
文件。
如果您希望这样做,您应该在web.config
文件中添加该设置,或者您真的想这样做,您可以尝试使用ConfigurationManager.OpenExeConfiguration Method,但我不知道这是不是好主意(或者如果它适用于dll)。