2012-07-13 7 views
6

Ho un'applicazione N-Layered, in cui utilizzo il modello Specification. Ora, voglio fornire alcuni modi per costruire specifiche al codice cliente. Deve essere diverse opzioni predefinite, come queste:pratica standard per esporre il modello di specifica al codice cliente?

  • Pari
  • GreaterThan
  • Contiene

Questi oggetti (lasciate che ve le Filtri di chiamata) non deve contenere alcuna logica (metodi), solo dati: tipo di filtro e parametri. E ci deve essere un modo naturale per trasformarli in specifiche al server. Ecco esempio di come dovrebbe apparire dal lato client:

var serviceClient = new DataModuleService(); 
var equalFilter = new ContainsFilter<Book>("Title","Lord of the Rings"); 
var lordOfTheRingBooks = serviceClient.GetBooks(equalFilter); 

Ci deve essere anche tipi di filtro per tutte le operazioni standard (come Equal, più, in, Between, StartsWith per la stringa, ecc) e modi di combinare loro con operatori booleani (e, o, non).

Esistono alcuni schemi/pratiche standard per implementare una cosa del genere?


UPD: il compito è congelato per ora, e ho iniziato a pensare che non v'è problema nella definizione di attività stessa.

risposta

2

Quello che stai cercando di fare mi suona come quello che sta facendo Hibernate con il suo criteria queries. Puoi inserire combine them tuttavia vuoi creare il filtro che ti interessa.

Questo non è C#, ma Java and C# sono lingue simili, quindi forse potresti prendere in prestito alcune idee da lì.

Inoltre, è possibile utilizzare la porta di Hibernate su .NET (NHibernate) per the same criteria queries (anche se non so esattamente se l'API è la stessa di Java).

4

Solo una risposta di alto livello: credo che si possano provare espressioni LINQ che supportano tutti gli operatori logici e condizionali a cui si fa riferimento. Cerca nello spazio dei nomi System.Linq.Expressions per vedere i tipi disponibili.

Link utili:

+0

"È morto Jim." il collegamento è morto –

+1

Grazie, sembra che il sito non funzioni. Ho aggiunto più collegamenti – sll

Problemi correlati