2009-06-10 7 views
5

¿Los métodos de extensión también están disponibles en el marco CE? Tengo un método de extensión para cadena que funciona bien en un proyecto de formularios de Windows, sin embargo, no se compilará en la aplicación PocketPC.C# Métodos de extensión en PocketPC Windows CE

Pensé que esto sería fácil de descubrir, sin embargo, no pude encontrar ninguna información sobre los métodos de extensión en PocketPC.

Edit: Ooops este fue mi error. Escribí el método de extensión en Visual Studio 2008, sin embargo, el proyecto de PocketPC se estaba compilando en Visual Studio 2005, lo que no me di cuenta. Bueno, esa es una hora de mi vida en la que nunca volveré. Gracias a todos por las respuestas de todos modos.

+0

¿Qué error (s) estás viendo? – ChrisF

Respuesta

7

Quería aclarar un poco la confusión aquí. Los métodos de extensión son una característica del compilador, no necesariamente una versión particular del marco. Por lo tanto, los métodos de extensión se pueden usar en cualquier plataforma donde haya una versión del compilador que admita tanto los métodos de extensión como esa plataforma.

El compilador C# 3.0 puede apuntar a los marcos 2.0 y es compatible con los métodos de extensión, por lo que deberían estar disponibles en el marco compacto.

Lo único que realmente proporciona el marco para los métodos de extensión es ExtensionAttribute. Sin embargo, esto no tiene ninguna funcionalidad asociada y su aplicación puede definirlo si no está disponible. Aquí es un post que escribí sobre el tema

2

Son compatibles con el marco compacto según this blog post. Sin embargo, espero que requieran Compact Framework versión 3.5. ¿Qué versión está utilizando?

2

¿A qué versión de framework se dirigen? Si está destinada a una audiencia de 2.0 CF VS2008, es posible que tenga que declarar extensionAttribute ...

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

Un buen enlace a eso aquí: http://blog.markarteaga.com/UsingExtensionMethodsInNETCF20.aspx –

+0

Bueno, tal vez, pero es mejor incluir AttributeUsage también ;-p –

+0

Ya, es verdad. –

0

Usted puede utilizarlo con .NET Compact Framework 2.0 y VS2008 través de un pequeño corte de acuerdo con this blog.

3

Sí, son compatibles con CF 3.5. Si está utilizando CF 2.0, necesitará definir ExtensionAttribute y luego funcionarán.

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