2009-06-10 5 views
5

Des méthodes d'extension sont-elles également disponibles sur le framework CE? J'ai une méthode d'extension pour la chaîne qui fonctionne bien dans un projet de formulaires Windows, mais il ne sera pas construit dans l'application PocketPC. Je pensais que ce serait une chose facile à trouver, mais je n'ai pas pu trouver d'informations sur les méthodes d'extension sur Pocket PC.C# Méthodes d'extension sur PocketPC Windows CE

Modifier: Ooops c'était mon erreur. J'ai écrit la méthode d'extension dans Visual Studio 2008, mais le projet PocketPC était en cours de compilation dans Visual Studio 2005, ce que je n'ai pas réalisé. Eh bien, c'est une heure de ma vie que je ne reviens jamais. Merci à tous pour les réponses de toute façon.

+0

Quelle erreur (s) êtes-vous voir? – ChrisF

Répondre

7

Je voulais dissiper un peu de confusion ici. Les méthodes d'extension sont une caractéristique du compilateur, pas nécessairement une version particulière du framework. Par conséquent, les méthodes d'extension peuvent être utilisées sur n'importe quelle plate-forme où il existe une version du compilateur qui prend en charge les méthodes d'extension et cette plate-forme.

Le compilateur C# 3.0 peut être orienté vers la version 2.0 et prend en charge les méthodes d'extension afin qu'elles soient disponibles sur l'infrastructure compacte.

La seule chose que le framework fournit réellement pour les méthodes d'extension est ExtensionAttribute. Cependant, cela n'a aucune fonctionnalité associée et peut être définie par votre application si elle n'est pas disponible. Voici un blog que j'ai écrit sur le sujet

2

Ils sont pris en charge dans le cadre compact selon this blog post. Cependant, je pense qu'ils ont besoin de la version 3.5 de Compact Framework. Quelle version utilisez-vous?

2

Quelle version du framework ciblez-vous? Si vous ciblez CF 2.0 de VS2008, vous devrez peut-être déclarer ExtensionAttribute ...

namespace System.Runtime.CompilerServices 
{ 
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class 
     | AttributeTargets.Method)] 
    public sealed class ExtensionAttribute : Attribute {} 
} 
+0

Bon lien à cela ici: http://blog.markarteaga.com/UsingExtensionMethodsInNETCF20.aspx –

+0

Eh bien, peut-être - mais il est plus agréable d'inclure le AttributeUsage aussi ;-p –

+0

Ya, c'est vrai. –

0

Vous pouvez l'utiliser avec le .NET Compact Framework 2.0 et VS2008 à travers une petite bidouille selon this blog.

3

Oui, ils sont pris en charge dans CF 3.5. Si vous utilisez CF 2.0, vous devrez définir ExtensionAttribute, puis ils fonctionneront.

// this is a definition of a 3.5 class for use in 2.0. If we upgrade to target CF3.5, we will need to remove it... 
    namespace System.Runtime.CompilerServices 
    { 
     public class ExtensionAttribute : Attribute { } 
    } 

namespace TestExtension 
{ 
    public static class Extensions 
    { 
     public static int TestMethod(this string value) 
     { 
      return value.ToString(); 
     } 
    } 
} 
Questions connexes