Domanda

Ho alcuni metodi di estensione di stile 'helper' che uso abbastanza regolarmente ora (sono per lo più abbastanza semplici, intuitivi e funzionano per il bene e non per il male, quindi per favore non far discendere questo in una discussione sul fatto che o non dovrei usarli). Stanno estendendo in gran parte le classi CLR .NET di base.

Attualmente, devo copiare il file 'ExtensionMethods.cs' che contiene i miei metodi di estensione su ogni nuovo progetto all'interno di una soluzione per poterli utilizzare in più progetti.

È possibile definire un'estensione per lavorare su più progetti all'interno di una soluzione, oppure inserirli in una dll 'estensioni' o sono limitati all'ambito del progetto?

MODIFICA Mentre le risposte del "progetto dedicato" sono perfettamente valide, ho scelto quelle di Marxidad come preferisco l'approccio che offre. Grazie per tutte le risposte finora e le ho sollevate tutte, dato che erano tutte buone risposte

È stato utile?

Soluzione

Se non si desidera creare un intero progetto solo per i metodi di estensione, è possibile collegare lo stesso file in progetti separati senza copiare il file:

  1. In Esplora soluzioni, selezionare il progetto di destinazione.
  2. Seleziona il menu Progetto.
  3. Seleziona Aggiungi elemento esistente.
  4. Nella finestra di dialogo Aggiungi elemento esistente, selezionare l'elemento che si desidera collegare.
  5. Dall'elenco a discesa del pulsante Apri, selezionare Aggiungi come collegamento.

Altri suggerimenti

L'approccio migliore è metterli tutti in un singolo progetto e creare una DLL. È quindi possibile includere quel progetto come riferimento al progetto o includere la DLL come riferimento binario (probabilmente la scelta migliore).

Potresti mettere le tue estensioni in un progetto separato e includerlo in ogni nuova soluzione che stai realizzando.

Fai solo attenzione al controllo delle versioni, ad es. quando altre applicazioni tentano di apportare modifiche al tuo progetto di estensione, tutti i progetti che utilizzano quel metodo devono essere ritestati.

Anche Scott Dorman ha ragione nel suo post : se non si desidera che vengano modificati, è possibile compilarli come una libreria DLL da includere nei nuovi progetti (anziché includere un progetto non compilato).

Crea un progetto per le tue estensioni alla piattaforma .NET e fai riferimento a quel progetto in ciascuno dei tuoi progetti applicativi. Inutile dire che tutte le cose di piattaforma, e solo cose di piattaforma, vanno in quell'unico progetto; roba dell'applicazione va nei tuoi progetti di applicazione.

Potresti anche esaminare varie librerie di piattaforme là fuori, come Umbrella , che offrono suite di estensioni alla piattaforma di base.

Diverse risposte suggeriscono che qualcuno inserirà le funzioni di estensione in un assembly comune. Qual è la risposta giusta. Ma c'è una cosa strana per i principianti: IntelliSense non ha potuto fare abbastanza bene. Diciamo che ho esteso ObservableCollection con una ReplaceRange funzione / metodo. Dopo una mossa, la classe delle funzioni di estensione, inizialmente dirà il compilatore error CS1061: 'System.Collections.ObjectModel.ObservableCollection<WhateverDto>' does not contain a definition for 'ReplaceRange' and no extension method 'ReplaceRange' accepting a first argument of type 'System.Collections.ObjectModel.ObservableCollection<WhateverDto>' could be found (are you missing a using directive or an assembly reference?) Se passi il mouse sopra la chiamata <=> problematica, non otterrai che l'offerta includa automaticamente la dichiarazione di utilizzo corretta. Qualcuno potrebbe pensare a quel punto di aver fatto qualcosa di sbagliato. Nulla è tuttavia, devi solo sapere dov'è il tuo metodo di estensione e devi digitare manualmente l'istruzione using per lo spazio dei nomi dei metodi. Dopo aver capito bene la tua fonte verrà compilata.

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