Se li metti in uno spazio dei nomi più alto del tuo attuale, saranno visibili automaticamente.
Quindi, se si dispone di spazi dei nomi per progetti come:
AdventureWorksInc.Web
AdventureWorksInc.Logic
AdventureWorksInc.DataAccess
quindi dichiarare la propria estensione direttamente in:
namespace AdventureWorksInc
{
public static class HtmlHelpers
{
public static string AutoCloseHtmlTags(this string html)
{
//...
}
}
}
Questo metodo di estensione verrà visualizzato ogni volta che si sta scrivendo codice in qualsiasi spazio nome sub di AdventureWorksInc senza la necessità di utilizzare una dichiarazione.
Tuttavia, l'estensione di cui sopra dimostra un possibile svantaggio. A causa del fatto che funziona su stringhe, verrà ora visualizzato come un metodo di estensione per tutte le stringhe, incluse quelle che non sono realmente HTML. Questo non è in realtà un problema con lo scope dei nomi, ma semplicemente un uso improprio di un metodo di estensione. Questa dovrebbe essere una statica regolare che richiede un parametro standard, quindi la chiamata è esplicita.
Generalmente, i metodi di estensione ben progettati con parametri tipizzati correttamente non verranno visualizzati in tipi che non si applicherebbero mai.
Questo ha senso con 'System.Linq', poiché tutti questi metodi di estensione sono concettualmente correlati a' System.Linq'. –
Quindi, secondo te, mettere le mie estensioni in "System.Security.Principal.Extensions" ha senso anche? –
Questo potrebbe essere terribilmente ingenuo, ma non causerebbe un sovraccarico superfluo quando è necessario un solo metodo di estensione su un file di classe, mentre il tuo spazio dei nomi potrebbe contenere dozzine? –