В приложении 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 = "[email protected]";
} // LoggerSettings
public class Settings : ISettings {
public LoggerSettings Logger { get; private set; }
public Settings() {
Logger = new LoggerSettings();
}
} // Settings
Что вы думаете об этом подходе и инъекционного класс как синглтон?
Нужно ли в этом случае установить любой класс/свойство как статический? Думаю, мне нужно, чтобы LoggerSettings и его свойства были статичными, а не? В противном случае мне нужно будет создать новый экземпляр при создании настроек?
Может кто-нибудь, пожалуйста, посоветуйте мне об этом?
Да, я использую StructureMap, чтобы вводить его как Singleton ... Но не будет ли LoggerSettings внутри настроек быть нулевым, потому что он не является статическим? –
Я раньше не использовал StructureMap, но, предположительно, он будет каждый раз вводить (такую же) зависимость 'LoggerSettings' в свой класс' Settings'; то есть он должен * вставлять * эту зависимость в 'Настройки'. Поскольку ваше свойство помечено 'private set', я не уверен, как он это сделает, но я предполагаю, что это то, что вы пытаетесь сделать. –
Я удалил частный набор, и в моей конфигурации StructureMap у меня есть следующее: Для() .Singleton(). Используйте (); Это будет успешно внедрять ISettings в мои службы, но его свойство Logger равно null. Это то, чего я не понимаю. –