2009-04-23 10 views

Répondre

10

Il existe un ugly hack qui obtient les méthodes d'extension fonctionnant dans .Net 2.0; mais il vaut mieux simplement mettre à jour votre framework à 3.5.

Autres sources: 1, 2. En bref (à partir du lien n ° 2): Les méthodes d'extension sont simplement des méthodes statiques normales étiquetées avec l'attribut [Extension]. Cet attribut est en fait juste ajouté par le compilateur dans les coulisses. Dans .NET 3.5, il vit dans System.Core, donc il suffit de définir votre propre attribut comme ceci:

namespace System.Runtime.CompilerServices 
{ 
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] 
    public class ExtensionAttribute : Attribute 
    { 
    } 
} 
+0

Le lien est rompu Je pense – deostroll

+0

@deostroll: Fixe. –

2

Absolument. Il y a quelques méthodes hacky, mais celle que j'utilise est de prendre System.Core du Mono project, d'ajouter tout son code à une nouvelle bibliothèque de classes .NET 2.0 nommée System.Core dans ma propre solution, et de la recompiler. Il y a quelques choses à corriger, comme changer leurs attributs MonoTODO en commentaires TODO, et réparer le AssemblyInfo.cs, mais cela fonctionne très bien. J'utilise maintenant les deux LINQ et des méthodes d'extension dans un projet 2.0 compilé dans VS 2008.

En supposant que vous obtenez la version 2.4 de la source Mono, vous devriez trouver le code sous:

<extracted directory>/mono-2.4/mcs/class/System.Core 

Si vous êtes coincé dans VS 2005, vous pouvez télécharger SharpDevelop, construire votre DLL System.Core avec celle ciblée sur 2.0, ajouter une référence à l'assembly compilé, et cela peut fonctionner, mais je ne sais pas si VS 2005 aura un problème avec la syntaxe d'extension ou non. J'imagine que ça te donnera des lèvres.

+0

La clé est compilée dans VS 2008. Je suis toujours coincé avec VS 2005 :( –

+0

J'ai vu le tag VS2008 et supposé 2008. Si vous êtes en 2005, vous pouvez peut-être trouver un binaire pré-compilé, ou utiliser SharpDevelop (je mettrai à jour avec un lien) Si vous compilez dans Win2K, vous n'avez malheureusement pas de chance car il ne supportera pas le framework 3.5. –

Questions connexes