2009-03-04 2 views

risposta

16

La parola chiave parziale viene in genere utilizzata nelle utilità di generazione del codice per consentire agli sviluppatori di aggiungere funzionalità aggiuntive al codice generato senza il timore che il codice venga cancellato se il codice viene nuovamente generato.

Con C# 3 la parola chiave parziale può essere applicata ai metodi per consentire agli utenti del codice generato di riempire gli spazi lasciati dal generatore. Il progettista Linq To Sql, ad esempio, fornisce metodi parziali che consentono di aggiungere la logica alle classi che il framework chiamerà se implementate. Il vantaggio qui è che il compilatore C# rimuoverà completamente i metodi parziali non implementati, quindi non ci sono risultati in termini di prestazioni per tutti gli per non averli implementati.

Le classi parziali possono anche essere utilizzate per organizzare classi molto grandi in file di codice separati, sebbene questo tipo di utilizzo sia in genere un segno che le classi sono troppo grandi e assumono troppe responsabilità.

1

Lo sto usando per classi di helper di partizionamento in cui alcuni metodi richiedono molto codice. Questo è un modo abbastanza semplice di mantenere la leggibilità poiché ogni file tratta solo una parte delle funzionalità della classe.

0

Il progettista LINQ to SQL lo utilizza estensivamente per suddividere comportamenti personalizzati (metodi parziali) al di fuori della classe di mappatura.
In breve, il suo scopo principale è per i generatori di codice.
Spero che questo aiuti.

1

In VB è possibile utilizzarlo per separare il codice "normale" dal codice che richiede il binding in ritardo tramite "Option Strict Off".

In C# lo uso solo per classi insolitamente grandi.

2

Il miglior utilizzo per la parola chiave parziale che posso pensare sono le classi annidate. Senza la parola chiave parziale, tutte le classi nidificate devono andare nello stesso file di codice della classe contenente.

+0

Oo, ottima idea! Non mi è mai venuto in mente di farlo. –

0

Uso sempre classi e metodi parziali con Linq2Sql. Altrimenti non l'ho mai usato per altro oltre alle classi UI/Code-behind.

Una delle grandi cose che mi piacciono delle classi parziali in linq2sql è che si può avere la classe parziale ereditare un'interfaccia e mapperà l'interfaccia alla classe generata. Ciò è utile se si dispone di più di un fornitore di dati e si desidera comunque utilizzare le stesse interfacce per tutte le classi di accesso ai dati.

2

Un uso che ho trovato è per il codice che potresti non voler esistere nel codice di produzione come la traccia o il codice di registrazione dello sviluppo. Si può inserire questo nella classe parziale e poi quando si esegue una build di produzione si costruisce semplicemente senza quei partial inclusi e il compilatore rimuoverà automaticamente magicamente tutte le chiamate a quei partial che sono stati esclusi.

+0

I metodi parziali funzionano probabilmente anche meglio per quel particolare caso d'uso. – JasonTrue

+0

Un'altra buona idea - +1 –

+0

@JasonTrue - anche i metodi parziali funzionano bene, basta usare l'uno o l'altro a seconda delle esigenze della situazione. –

0

WPF utilizza estensivamente le classi parziali. XAML genera una classe parziale che è possibile aggiungere a.

0

Uso le classi parziali per ridurre il dolore di unione con il controllo della versione quando so che avremmo diversi sviluppatori che lavorano su una classe. Ad esempio, spesso abbiamo suddiviso la nostra classe DAL in diversi file di classi parziali. Se non li metti in file diversi, è facile ottenere conflitti di merge che richiedono un po 'di tempo per essere risolti quando vengono registrati nella versione ctl.

Quando lo sviluppo diventa meno caotico mentre la classe si avvicina al completamento, ci liberiamo dei file parziali. Lo usiamo solo per semplificare i problemi di VC/mulit-developer