Domanda

Questo è per lo più una richiesta di commenti, se c'è un motivo dovrei non imboccare questa strada.

Ho un multi-tierd, CodeSmith generato applicazione. A livello di interfaccia utente ci devono essere alcuni campi che sono richiesti, ed i campi richiesti variano a seconda del valori dei campi nell'entità legato. Quello che sto pensando di fare è l'aggiunta di un CustomAttribute "PropertyRequired" per ogni proprietà nelle entità che posso impostare vero o falso quando carico l'entità nella sua manager. Quindi userò riflessione per interrogare la proprietà e fornire un feedback visivo per l'utente a livello di interfaccia utente, e posso confermare che tutte le proprietà richieste hanno un valore valido il manager prima di risparmio. Ho lavorato questo fuori come una prova di concetto con una proprietà in un'unica entità, ma prima che io cerco di estenderlo al resto dell'applicazione mi piacerebbe chiedere se c'è qualcuno con più esperienza a uno dirmi di andare per questo, o perché non mi piace quando mi scala in su. Se questa è una cattiva idea, o se si può suggerire un approccio migliore si prega di offrire il vostro parere.

È stato utile?

Soluzione

E 'un modo abbastanza ragionevole per farlo (ho fatto qualcosa di molto simile in precedenza) - ma ci sono sempre aspetti negativi:

  • qualsiasi codice che necessita l'entità avrà bisogno del riferimento supplementare (supponendo che l'attributo e entità sono in diversi assiemi)
  • i valori (a meno che non sei intelligente su di esso) deve essere determinata al momento della compilazione
  • non è possibile utilizzarlo su soggetti al di fuori del vostro controllo

Nella maggior parte dei casi di cui sopra non sono un problema. Se sono un problema, si potrebbe desiderare di supportare un modello di metadati esterni - ma meno avete bisogno, questo sarebbe un errore. Non farlo a meno che non è necessario (che significa: andare avanti e utilizzare gli attributi, sono di solito fine)

.

Altri suggerimenti

Non v'è alcuna ragione intrinseca per evitare di attributi personalizzati. Si tratta di una funzione CLR sostenuto che è la spina dorsale per molti prodotti disponibili (Code Contracts, FxCop, ecc ...).

Non si tratta di un approccio ragionevole e più sano di cottura questa roba in un livello di interfaccia utente. Ci sono un paio di punti da prendere in considerazione prima di prendere il pieno di immersione:

  • Si sono strettamente accoppiamento logica di business con l'entità di business in sé. ci sono circostanze in cui un campo che sia necessario o valori validi potrebbe cambiare? Si può essere limitando se stessi o essere di fronte a un meccanismo di convalida incoerente
  • Assegnazione dinamica è possibile, ma più complicato - vale a dire quando si imposta un campo da richiedere questo è ciò che sarà, a meno di ignorare
  • attributi
  • personalizzati possono essere abbastanza inflessibile se più in basso la linea si voleva fare qualcosa di più complicato - vale a dire se è necessario passare stato in uno schema di convalida attributo driven. Attributi come assegnazione dichiarativa. Solo avendo un vero / falso proprietà richiesta non dovrebbe essere un problema qui però

solo essere un avvocato del diavolo davvero, in generale, per un abbastanza semplice applicazione in cui vi interessa soltanto i campi richiesti, questo è piuttosto un modo ordinato di farlo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top