Moyens de maintenir le code de configuration de la logique de code à l'aide de l'Injection de Dépendance

Comment peut garder tous les fichier de configuration de code de ma logique de code à l'aide de Paramètres (ApplicationSettingsBase) et l'Injection de Dépendance?

Avec la configuration que je veux dire un client fichier de configuration spécifique.

Dois-je vraiment injecter une classe de configuration à chaque fois que j'en ai besoin ou est-il un autre modèle?

Il serait bien d'obtenir un exemple de code!

Échantillons:

Configuration Statique:

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)
            {

            }
        }
    }
}

Non statique de la Configuration:

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)
            {

            }
        }
    }
}

Contexte statique non statique de la configuration:

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)
            {

            }
        }
    }
}
  • ce que vous voulez, c'est une Inversion de Contrôle Conteneur
  • ce que je veux obtenir est une explication de la séparant de la logique de code de configuration en utilisant une inversion de contrôle conteneur.
  • J'ai écrit un billet de blog expliquant comment et pourquoi nous utilisons StructureMap pour garder notre configuration distincte de notre logique: lostechies.com/joshuaflanagan/2009/07/13/... La fonctionnalité décrite dans ce post est maintenant disponible dans le FubuCore bibliothèque utilitaire (vous pouvez l'obtenir via nuget): github.com/DarthFubuMVC/fubucore/tree/master/src/FubuCore/...
InformationsquelleAutor Rookian | 2011-09-02