Siamo in procinto di riprogettare alcuni software legacy per essere più testabili e abbiamo deciso di utilizzare Dependency-Injection e Castle.Windsor per aiutarci.Motivo decorativo multiplo nel castello-windsor
In primo luogo, il nostro obiettivo: * Un numero di decoratori che funzionano tutti su un flusso di dati. * Sono possibili combinazioni multiple di decoratori e i nodi radice in ciascun caso possono essere richiesti per ottenere dati da luoghi diversi.
Tecnicamente, il nostro disegno è la seguente:
interface IUpdateableValue<T>
{
T Get();
};
Abbiamo per esempio tre serie di dati che devono essere recuperati con un numero di componenti, tutte attuazione IUpdateableValue() (pseudo-codice):
JsonParser(
Decompressor(
Decrypter(decryptionKey
FileCache(filename,
HttpWebDownloader(url))))
XmlParser(
Decompressor(
Decrypter(decryptionKey2
FileCache(filename2,
HttpWebDownloader(url2))))
Sto avendo difficoltà a raggiungere fuori design per adattarsi in un DI-quadro come il Castello di Windsor- . Sospetto che alcuni possano essere gestiti da istanze nominate, ma questo sembra maleodorante per questo utilizzo.
L'idea è che "l'utente" di ad es. le istanze di JsonParser e XmlParser non sanno (o si preoccupano) se i dati provengono da un HttpUrl, da un file o magicamente estratti da un cappello.
Sto pensando che c'è qualcosa di sbagliato nel nostro design, ma non so come risolverlo.
Qualche idea su come procedere?
Ci sono domande su come lavorare con decoratori generici in Windsor qui su SO (come [questo qui] (http://stackoverflow.com/questions/9888019)), ma non ricordo che qualcuno abbia ricevuto una risposta, quindi Mi aspetto che questo sia difficile da fare con Windsor. Altri contenitori, come Autofac o Simple Injector, potrebbero avere più successo. Forse [questa pagina wiki sulla registrazione di decoratori generici] (http://simpleinjector.codeplex.com/wikipage?title=Advanced-scenarios#Generic_Decorators) in Simple Injector potrebbe darti qualche idea su come progettare il tuo sistema. – Steven
Perché dovresti usare Castle per questo? Quali benefici fornirà? –