Sto progettando una piccola libreria di infrastruttura applicativa, con l'obiettivo di semplificare lo sviluppo di applicazioni basate su ASP.NET MVC. L'obiettivo principale è applicare la convenzione sulla configurazione.
Hovewer, voglio ancora rendere alcune parti "configurabili" dagli sviluppatori.
Sono propenso per il seguente progetto:
public interface IConfiguration
{
SomeType SomeValue;
}
// this one won't get registered in container
protected class DefaultConfiguration : IConfiguration
{
public SomeType SomeValue { get { return SomeType.Default; } }
}
// declared inside 3rd party library, will get registered in container
protected class CustomConfiguration : IConfiguration
{
public SomeType SomeValue { get { return SomeType.Custom; } }
}
E la classe "service":
public class Service
{
private IConfiguration conf = new DefaultConfiguration();
// optional dependency, if found, will be set to CustomConfiguration by DI container
public IConfiguration Conf { get { return conf; } set { conf = value; } }
public void Configure()
{
DoSomethingWith( Conf );
}
}
Lì, la parte "configurazione" è chiaramente una dipendenza della classe di servizio, ma si tratta di un "uso eccessivo" di DI?