@Rookian Похоже также на тестируемое решение и полностью избегает DI. Это может быть не так гибко, как нужно. С DI ваш IoC-контейнер может предоставлять разные реализации для разных классов (при необходимости); где, используя статический маршрут, вы в значительной степени привязаны к одной реализации конфигурации. Не может быть проблемой в вашей ситуации, просто подумал, что упомяну это.
ожно сохранить весь код файла конфигурации из моего логического кода, используя Настройки (ApplicationSettingsBase) и Внедрение зависимостей?
Под конфигурацией я имею в виду специфический для клиента файл конфигурации.
Мне действительно нужно вводить класс конфигурации каждый раз, когда мне это нужно, или есть другой шаблон?
Было бы здорово получить пример кода!
Образцы:
Статическая конфигурация:
public static class StaticConfiguration
{
public static bool ShouldApplySpecialLogic { get; set; }
public static string SupportedFileMask { get; set; }
}
public class ConsumerOfStaticConfiguration
{
public void Process()
{
if (StaticConfiguration.ShouldApplySpecialLogic)
{
var strings = StaticConfiguration.SupportedFileMask.Split(',');
foreach (var @string in strings)
{
}
}
}
}
Нестатическая конфигурация:
public interface IConfiguration
{
bool ShouldApplySpecialLogic { get; set; }
string SupportedFileMask { get; set; }
}
public class Configuration : IConfiguration
{
public bool ShouldApplySpecialLogic { get; set; }
public string SupportedFileMask { get; set; }
}
public class Consumer
{
private readonly IConfiguration _configuration;
public Consumer(IConfiguration configuration)
{
_configuration = configuration;
}
public void Process()
, {
if (_configuration.ShouldApplySpecialLogic)
{
var strings = _configuration.SupportedFileMask.Split(',');
foreach (var @string in strings)
{
}
}
}
}
Статический контекст с нестатической конфигурацией:
public static class Context
{
public static IConfiguration Configuration { get; set; }
}
public class ConsumerOfStaticContext
{
public void Process()
{
if (Context.Configuration.ShouldApplySpecialLogic)
{
var strings = Context.Configuration.SupportedFileMask.Split(',');
foreach (var @string in strings)
{
}
}
}
}