Domanda

Sono metodi di estensione disponibili sul quadro CE come bene? Ho un metodo di estensione per la stringa che funziona bene in un progetto Windows Form, ma non ci vorrà costruire in applicazione PocketPC.

Ho pensato che questo sarebbe una cosa facile da scoprire, ma non sono riuscito a trovare alcuna info per quanto riguarda i metodi di estensione su PocketPC.

Modifica Ops questo è stato il mio errore. Ho scritto il metodo di estensione in Visual Studio 2008, ma il progetto PocketPC era stato compilato in Visual Studio 2005, che non ho capito. Beh questo è un ora della mia vita mi sono mai tornare. Grazie a tutti per le risposte in ogni caso.

È stato utile?

Soluzione

Ha voluto chiarire un po 'di confusione qui. metodi di estensione sono una caratteristica del compilatore, non necessariamente una particolare versione del framework. Pertanto, i metodi di estensione possono essere utilizzati su qualsiasi piattaforma in cui v'è una versione del compilatore che supporta entrambi i metodi di estensione e quella piattaforma.

Il compilatore C # 3.0 di destinazione può fino a 2.0 framework e supporta i metodi di estensione in modo che dovrebbe essere disponibile sul quadro compatto.

L'unica cosa che il quadro prevede in realtà per i metodi di estensione è l'ExtensionAttribute. Tuttavia, questo non ha alcuna funzionalità ad esso associato e può essere definita dall'applicazione se non è disponibile. Ecco un post sul blog che ho scritto su questo argomento

Altri suggerimenti

Sì, sono supportati in CF 3.5. Se si utilizza CF 2.0 è necessario per definire l'ExtensionAttribute e quindi funzionerà.

    // 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();
        }
    }
}

Sono supportati nel Compact Framework in base al questo post del blog . Tuttavia, mi aspetto che richiedono la versione Compact Framework 3.5. Quale versione stai usando?

Quale versione quadro stai destinati a? Se ci si rivolge CF 2.0 da VS2008, potrebbe essere necessario dichiarare ExtensionAttribute ...

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

Si può usare con .NET Compact Framework 2.0 e VS2008 attraverso un piccolo trucco in base alla questo blog.

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