Pergunta

são métodos de extensão disponíveis sobre o quadro CE também? Eu tenho um método de extensão para string que funciona bem em um projeto Windows Forms, no entanto, não vai construir em aplicação PocketPC.

Eu descobri que seria uma coisa fácil de descobrir, no entanto eu era incapaz de encontrar qualquer informação sobre os métodos de extensão no PocketPC.

Editar: Opa este foi meu erro. Eu escrevi o método de extensão no Visual Studio 2008, no entanto, o projecto PocketPC estava sendo compilado no Visual Studio 2005, que eu não percebi. Bem, isso é uma hora da minha vida eu nunca estou voltando. Obrigado a todos por respostas de qualquer maneira.

Foi útil?

Solução

queria esclarecer um pouco de confusão aqui. Os métodos de extensão são uma característica do compilador, não necessariamente uma versão específica do quadro. Portanto, os métodos de extensão pode ser usado em qualquer plataforma onde há uma versão do compilador que suporta ambos os métodos de extensão e que plataforma.

O compilador C # 3.0 pode-se alvo para 2,0 frameworks e métodos de extensão suportes para que eles devem estar disponíveis sobre o quadro compacto.

A única coisa que o framework fornece realmente para métodos de extensão é o ExtensionAttribute. No entanto, este não tem qualquer funcionalidade associada a ele e pode ser definido pelo seu aplicativo se ele não está disponível. Aqui está um post que escrevi sobre o assunto

Outras dicas

Sim, eles são suportados no CF 3.5. Se você estiver usando CF 2.0 você precisará definir o ExtensionAttribute e, em seguida, eles vão trabalhar.

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

Eles estão apoiados na Compact Framework acordo com este post . No entanto, espero que eles exigem Compact Framework versão 3.5. Qual versão você está usando?

O que versão do framework que você está targetting? Se você está direcionando CF 2.0 do VS2008, pode ser necessário declarar ExtensionAttribute ...

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

Você pode usá-lo com o .NET Compact Framework 2.0 e VS2008 através de um pequeno corte de acordo com este blog .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top