为什么价值没有反映在服务层

时间:2017-08-01 15:44:18

标签: c# asp.net asp.net-mvc static app-config

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的值没有反映在服务层?

  

造成这种情况的原因是什么?我如何获取服务层中的值??

1 个答案:

答案 0 :(得分:1)

EnrollmentService将从正在执行的程序集配置文件中加载配置。在您的方案中,它将是ConfigurationManager文件。

如果您希望这样做,您应该在web.config文件中添加该设置,或者您真的想这样做,您可以尝试使用ConfigurationManager.OpenExeConfiguration Method,但我不知道这是不是好主意(或者如果它适用于dll)。