c # - erro compilar direcionamento Compact Framework Net 3.5 - Não sobrecarga para o método 'GetString' toma '1' argumentos

StackOverflow https://stackoverflow.com/questions/402648

Pergunta

Na verdade, tenho duas perguntas sobre o mesmo problema, mas eu acho que é melhor para separá-los desde que eu não acho que eles estão relacionados.

Fundo: Estou escrevendo um software Windows Mobile em VB.NET que entre suas tarefas precisa se conectar a um servidor de correio para enviar e recuperar e-mails. Como resultado, eu também precisa de um Mime-parser (codificar e descodificar) os e-mails, a fim de obter os anexos. Primeiro eu pensei, eu iria escrever um pequeno "hack" para lidar com esta questão (usando a corda de análise de ordinário), mas então eu vi um projeto, escrito em C #, no CodeProject que eu pensei que iria implementar em minha solução. Eu não sei muito sobre C #, então eu simplesmente fez um fora de classe biblioteca de classes e usou-o no meu-projeto VB.NET. Esta biblioteca funciona muito bem quando estou visando o Net Framework no Windows-computadores normais no entanto, quando eu estava indo para fazer a mesma biblioteca visando o Net Framework Compact, eu corri em problemas. Isso é natural já que a Net Framework Compact tem mais limites, mas eu realmente não se que muitos erros -. Apenas dois embora repetida em vários lugares do código

Um dos erros é aquele citado no assunto desta questão ou seja, "Não sobrecarga para o método 'GetString' toma '1' argumentos". Como mencionado acima, eu não sei muito sobre C #, então eu convertido a classe com o erro on-line em VB-NET mas ainda assim eu não entendo muito .. Aqui é a função que dá acima erro indicado:

public virtual string DecodeToString(string s)
{
  byte[] b = DecodeToBytes(s);
  if(m_charset != null)
  {
    //ERROR ON THIS LINE
    return System.Text.Encoding.GetEncoding(m_charset).GetString(b);
  }
  else
  {
    m_charset = System.Text.Encoding.Default.BodyName;
    //ERROR ON THIS LINE
    return System.Text.Encoding.Default.GetString(b);
  }
}

Se o código-fonte completo é necessário para esta classe, então eu posso postá-lo em outra mensagem neste segmento ou você pode encontrá-lo fazendo o download do código no web-site mencionado acima e por ter um olhar para a classe chamado MimeCode.cs.

Qualquer pessoa que pode me ajudar? Posso reescrever acima função de alguma forma para superar este problema?

Eu agradeço antecipadamente por sua ajuda.

Um abraço e um Feliz Ano Novo para todos vocês.

Rgds, moster67

Foi útil?

Solução

CF .NET requer que você use a assinatura: Método Encoding.GetString (array [], índice Int32, contagem Int32) de modo a tentar usar:

...GetString(b, 0, b.Length);

Outras dicas

Se você olhar para cima a classe Encoding no MSDN você encontrará informações sobre a disponibilidade de métodos na estrutura compacta.

http://msdn.microsoft.com /en-us/library/system.text.encoding.default.aspx

No seu caso a propriedade System.Text.Encoding.Default é suportado pelo .NET Compact Framework 3.5, 2.0, 1.0, assim você deve estar tudo pronto.

Mas aqui é a coisa. MS por vezes cair de de métodos de implementação de classe, ou para ser sobrecargas precisos.

Olhando para a documentação http://msdn.microsoft.com/en- us / library / system.text.encoding.getstring.aspx você pode dizer, olhando para os ícones (imagens pequenas para a esquerda) que, enquanto o .NET Compact Framework suporta a classe de codificação, algumas sobrecargas foi removido.

Quando você passar a matriz byte [] para o método GetString, não pode achar que a sobrecarga assim que você tem que adicionar um offset int e int count.

O quadro compacto provavelmente não suporta a sobrecarga que leva apenas um array de bytes. Tente a sobrecarga que utiliza a matriz de bytes, um índice de início e uma contagem e dar-lhe 0, quando o índice de início e b.Length como o comprimento.

Graças a Michael, John e Rune para responder à minha pergunta. Usando suas sugestões, resolvi o problema e consegui compilar / criar a biblioteca visando o CF.NET 3.5. Graças também ao ctacke para editar a minha pergunta e torná-lo mais legível.

BTW, como mencionado no meu primeiro post, eu tinha outro problema que eu queria perguntar em outro segmento e que não permitam-me para criar a biblioteca para CF.NET, ou seja, a linha:

m_charset = System.Text.Encoding.Default.BodyName;

Neste caso, o problema é que o CF.NET não reconhece "BodyName". Não conseguimos encontrar formas alternativas ou soluções alternativas para obter o conjunto de caracteres usado (BodyName recupera esta informação) para que no final eu simplesmente atribuídos a ele um valor fixo (iso-8859-1). Isto significa, infelizmente, que a biblioteca não irá lidar com todos os diferentes personagens-sets lá fora, mas pelo menos o código não vai quebrar e eu era capaz de compilá-lo. Em qualquer caso, para mim é o suficiente desde a minha aplicação não se preocupa com o texto-mensagens - é usar e-mails para enviar e obter anexos (semelhante ao Gmail-drive, mas com o meu próprio provedor)

.

Obrigado mais uma vez.

Atenciosamente, moster67

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