Ho l'obbligo di creare una libreria di profili "di base" (in C # - NET 4.5.2) per vari consumatori interni (tecnici). Questo profilo consiste di campi di metadati che sarebbero condivisi da un'ampia varietà di implementazioni di profili differenti. I metadati per questi diversi profili sono archiviati in una singola posizione, ma ogni effettiva implementazione per il profilo di base avrà la propria memoria di dati (di cui non saprò nulla).
Invece di fornire un servizio effettivo, forniremo solo le classi / interfacce di base necessarie per consentire agli sviluppatori di implementare i propri servizi di profilo.
Idealmente, mi piacerebbe rendere l'idratazione dei campi di metadati del profilo di base completamente automatica per gli sviluppatori, che si concentrano sull'idratazione dei loro campi solo nella loro classe figlia.
I miei requisiti sono:
- Profilo di base tutti gli altri oggetti profilo devono ereditare
- Il profilo di base si autoidrata da un'origine dati statica che è opaca per gli implementatori.
- La possibilità di eseguire query per molti profili in base a un predicato, un elenco di ID profilo o entrambi.
- Operazioni CRUD per un determinato profilo che consentono dette operazioni sui metadati del profilo di base oltre a qualsiasi cosa l'utente debba eseguire nei propri sistemi.
L'idea che è stata già lanciata include la possibilità per gli sviluppatori di fornire una funzione generatore ( Func<Guid, Profile<T>>
) in cui Guid è l'Id del profilo (per le letture esistenti) e la funzione esegue qualsiasi logica richiesta dallo sviluppatore per inizializzare il profilo mentre allo stesso tempo ottenere i dati del profilo di base.
Sarei curioso di sentire le opinioni della comunità su questo però (e anche se questo è anche un buon corso da tracciare).