1

在具有多个程序集的 ASP.NET MVC 应用程序上,我需要访问一些设置。

基本上。这些设置是来自 Web.Config AppSettings 的常量或值。

Settings我的想法是在我需要的地方注入一个类,作为一个单例:

public interface ISettings {
  LoggerSettings Logger { get; }
} // ISettings

public class LoggerSettings {
  public String Levels { get { return ConfigurationManager.AppSettings["Logger.Levels"]; } }
  public const String Report = "team@xyz.com";
} // LoggerSettings

public class Settings : ISettings {
  public LoggerSettings Logger { get; private set; }

  public Settings() {
    Logger = new LoggerSettings();
  }
} // Settings
  1. 您如何看待这种方法并将类作为单例注入?

  2. 在这种情况下,我是否需要将任何类/属性设置为静态?我想我需要将 LoggerSettings 及其属性设为静态,不是吗?否则我需要在构建设置时创建一个新实例?

有人可以请教我吗?

4

1 回答 1

3

如果您实际上是在注入您的类(通过 DI 框架),并且“单例”意味着您在 DI 框架中使用了单例“范围”,那么这种方法就可以正常工作。如果这实际上是您正在做的事情,那么您的所有属性都不需要是静态的,因为相同的“单例”实例将被注入到任何依赖它的类中。

于 2013-03-28T01:02:02.270 回答