Инициировать свойства автоматически с помощью StructureMap - PullRequest
2 голосов
/ 18 октября 2010

Если у меня есть N номеров классов в каждом из них, я объявляю, например, свойство, которое содержит некоторые значения параметров приложения из файла конфигурации.

  public static IAppSettings AppSettings { get; set; }

Я хочу заполнить это свойство автоматически при создании класса.

Я думаю достичь этой цели с помощью StructureMap.

Я хочу как-то «сказать» только в одном месте, что, если класс содержит это свойство, заполните его.

Может быть, кто-то сталкивался с этим и есть какие-нибудь идеи?

ASP.NET / ASP.NET MVC, ConsoleApp / WinForms

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Звучит так, как будто вам нужен вариант SettingsScanner, описанный в этом посте: http://lostechies.com/joshuaflanagan/2009/07/13/how-we-handle-application-configuration/

Полный код сканера и ISettingsProvider можно получить из исходного кода FubuMVC: https://github.com/DarthFubuMVC/fubumvc/blob/2e7ea30391eac0053300ec0f6f63136503b16cca/src/FubuMVC.StructureMap/SettingsScanner.cs

0 голосов
/ 18 октября 2010

Если у меня есть N номеров классов на каждом из них я заявляю, например, свойство, которое содержит некоторое приложение установка значений из конфигурационного файла.

Вы должны рассмотреть возможность получения этих N классов из базового класса, который содержит это свойство:

public abstract Base
{
    public IAppSettings AppSettings { get; set; }
}

тогда, если вы хотите, чтобы это свойство автоматически заполнялось StructureMap, вам больше не нужно создавать их экземпляры вручную, а всегда запрашивать у контейнера значение.

Например, в приложении ASP.NET MVC я бы использовал инжектор конструктора, чтобы передать значение IAppSettings всем контроллерам, которые в нем нуждаются.

...