Ho un oggetto che contiene dati e sputa un output trasformato, chiamato IBaseItem
.
Ho anche due parser, IParserA
e IParserB
. Questi parser trasformano i dati esterni (nel formato dataA e dataB rispettivamente) in un formato utilizzabile dal mio IBaseItem
(baseData).
Voglio creare 2 sistemi, uno che funzioni con dataA e uno che funzioni con dataB. Permetteranno all'utente di inserire dati e associarli ai plug-in / implementazioni giusti e trasformare i dati in outData.
Voglio scrivere personalmente questi agenti, ma altre persone forniscono la parser e la logica baseitem, e come tale sto implementando questi elementi come plugin (da qui l'uso delle interfacce). Altri programmatori possono scegliere di implementare 1 o entrambi i parser.
Q: Come dovrei strutturare il modo in cui gli elementi di base e i parser sono associati, memorizzati e caricati in ciascuno dei miei programmi?
Relazioni di classe:
Quello che ho provato:
Inizialmente, penso che ci dovrebbe essere una dll diversa per ciascuno dei miei 2 vigili urbani, ognuno dei quali ha un parser e un valore base in essi. Tuttavia, la duplicazione della logica baseitem non sembra corretta (specialmente se la logica dell'elemento base cambia).
Ho quindi pensato che gli elementi base potessero tutti avere una propria dll e quindi associare in qualche modo parser e basi (guids?), ma non so se l'implementazione dell'ID / associazione overhead aggiungesse troppa complessità.