In Visual Studio 2008
È possibile creare un metodo di estensione per lavorare in un progetto .NET Framework 2.0?Utilizzo dei metodi di estensione con .NET Framework 2.0
risposta
C'è uno ugly hack che utilizza i metodi di estensione in .Net 2.0; ma sarebbe meglio solo aggiornare il tuo framework a 3.5.
In breve (dal collegamento n. 2): I metodi di estensione sono solo normali metodi statici contrassegnati con l'attributo [Estensione]. Questo attributo è in realtà appena aggiunto dal compilatore dietro le quinte. In .NET 3.5, vive in System.Core, quindi basta definire il proprio attributo in questo modo:
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class ExtensionAttribute : Attribute
{
}
}
Il collegamento è interrotto Penso che – deostroll
@ defoll: risolto. –
Assolutamente. Esistono alcuni metodi hacky, ma quello che sto utilizzando è prendere System.Core dal Mono project, aggiungere tutto il suo codice a una nuova libreria di classi .NET 2.0 denominata System.Core nella mia soluzione e ricompilarla. Ci sono alcune cose da sistemare, come cambiare i loro attributi MonoTODO in commenti TODO e correggere AssemblyInfo.cs, ma funziona benissimo. Ora sto usando sia LINQ e metodi di estensione in un progetto 2.0 compilato in VS 2008.
Supponendo che si ottiene la versione 2.4 della sorgente Mono, si dovrebbe trovare il codice sotto:
<extracted directory>/mono-2.4/mcs/class/System.Core
Se Sei bloccato in VS 2005, puoi scaricare SharpDevelop, compilare la tua DLL System.Core con quella destinata a 2.0, aggiungere un riferimento all'assembly compilato, e potrebbe funzionare, ma non so se VS 2005 avrà un problema con la sintassi dell'estensione o meno. Immagino che ti darà un po 'di labbra.
La chiave è stata compilata in VS 2008. Sono ancora bloccato con VS 2005 :( –
Ho visto il tag VS2008 e assunto il 2008. Se sei nel 2005, potresti essere in grado di trovare un binario precompilato o utilizzare SharpDevelop (aggiornerò con un link) .Se stai compilando in Win2K, sfortunatamente, sei sfortunato, dal momento che non supporta il framework 3.5. –
Vedere la voce [il mio blog] (http://colins-corner.blogspot.com/2009/01/extension-methods-in-net-20.html) per i dettagli. –