Domanda

Sono terribilmente stanco di controllare tutti i miei argomenti per null e di lanciare ArgumenutNullExceptions quando lo sono.

A quanto ho capito, C# 4.0 consente alcuni costrutti di progettazione tramite contratto.Sarà possibile specificare che un metodo non accetterà argomenti null in C# 4.0?

Inoltre, c'è qualcosa che posso fare nel frattempo (forse un attributo?) per evitare questo compito monotono di verificare la presenza di null e lanciare?

È stato utile?

Soluzione

Puoi creare una NotNull<T> classe generica che aiuti, ma ci sono alcuni effetti collaterali. Vedi post sul blog di Robert Nystrom .

Altri suggerimenti

Rick Brewster descrive una buona soluzione per la verifica concisa e dichiarativa dei parametri di stile in questo post,

http: // blog.getpaint.net/2008/12/06/a-fluent-approach-to-c-parameter-validation/

Evita l'uso della riflessione (svantaggio di DbC) e non crea overhead per percorsi di codice non eccezionali.

Come il modo in cui usa i metodi di estensione per consentire quelle che sembrano essere chiamate di metodo di istanza su oggetti null. Un po 'intelligente di codifica IMO.

Se sei venduto su DbC, numero spec. Google e PostSharp.

Non sono sicuro dei costrutti DbC nativi in ​​C# 4.0, ma Microsoft rilascerà più linguaggi Contratti biblioteca.
È possibile scaricare la versione per MSVS2008 Qui.

In alternativa alle risposte già fornite, vale la pena esaminare Null Object design pattern.

L'essenza di questo modello di progettazione è che una volta " null object " viene creato, non è più necessario eseguire alcun controllo per null e i metodi dell'oggetto null implementano il comportamento desiderato ogni volta che un null (altrimenti) sarebbe stato passato rispetto a un riferimento a un " oggetto reale ".

Questo modello di progettazione non dipende da C # 4.0 e in effetti può essere facilmente implementato in quasi tutti i linguaggi di programmazione OO .

Ho appena iniziato a utilizzare Code Contracts è una nuova funzionalità in C # 4.0, è necessario scaricare un componente aggiuntivo da MS per consentire di vederlo nelle impostazioni del progetto. Dettagli qui - & Gt; http://research.microsoft.com/en-us/projects/contracts/

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