Un piccolo background su da dove viene questa domanda. Nella mia attuale applicazione .NET sto lavorando su alcune funzionalità relative all'archiviazione di un certo tipo di entità aziendale chiamata "Progetto". A seconda della situazione, ciò che deve essere archiviato e le azioni esatte relative all'archiviazione possono variare notevolmente. La mia idea di base è creare un'entità chiamata ArchiveSchedule che in pratica memorizza i dati che dicono che questo tipo di progetto dovrebbe essere archiviato dopo questo lasso di tempo.
Desidero incapsulare le mie query per la selezione di tutti gli oggetti da archiviare e i comandi per l'archiviazione effettiva nei propri oggetti che ereditano da alcune interfacce comuni. Ci saranno più query di archiviazione (selezionare elementi basati su varie proprietà, o se sono stati archiviati prima e successivamente ripristinati, ecc.) E più comandi di archiviazione (cioè comandi che inviano dati a interfacce diverse, alcuni che eseguono eliminazioni, ecc. ). Quello che sto considerando di fare è includere su ArchiveSchedule, riferimenti al tipo .NET effettivo corrispondente alla query e al comando che voglio usare per questo programma. Quindi, quando voglio eseguire effettivamente query e comandi, utilizzo reflection per creare l'oggetto ed eseguire il comando o la query.
Questa strategia di base per archiviare le informazioni sul tipo nel database e quindi utilizzare il reflection per creare gli oggetti e iniettare le dipendenze è antipattern? O c'è un modo migliore per farlo?
Nota: so che ci sono alcuni problemi con la semplice memorizzazione del nome del tipo o dello spazio dei nomi, perché potrebbero cambiare durante il refactoring, ma credo che questi potrebbero essere mitigati abbastanza facilmente usando un GuidAttribute nella definizione della classe e archiviando invece il guid, quindi Sono curioso di sapere se ci sono altri problemi fondamentali oltre a questo.