c # - error al compilar la segmentación Compact Net Framework 3.5 - No hay sobrecarga para el método 'GetString' toma los argumentos '1'

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

Pregunta

En realidad tengo dos preguntas sobre el mismo problema, pero creo que es mejor separarlas, ya que no creo que estén relacionadas.

Fondo: Estoy escribiendo un software de Windows Mobile en VB.NET que entre sus tareas necesita conectarse a un servidor de correo para enviar y recuperar correos electrónicos. Como resultado, también necesito un analizador Mime (para decodificar y codificar) los correos electrónicos para obtener los archivos adjuntos. Primero pensé, escribiría un pequeño " hack " para manejar este problema (usando el análisis de cadenas ordinario) pero luego vi un proyecto, escrito en C #, en CodeProject que pensé que implementaría en mi solución. No sé mucho sobre C #, así que simplemente hice una biblioteca de clases con las clases y la usé en mi proyecto VB.NET. Esta biblioteca funciona muy bien cuando me dirijo a Net Framework en computadoras con Windows normales; sin embargo, cuando iba a crear la misma biblioteca con Compact Net Framework, tuve problemas. Esto es natural ya que Compact Net Framework tiene más límites, pero en realidad no tuve tantos errores, solo dos, aunque se repiten en varios lugares del código.

Uno de los errores es el citado en el tema de esta pregunta, es decir, " No hay sobrecarga para el método 'GetString' toma los argumentos '1' " Como se mencionó anteriormente, no sé mucho acerca de C #, así que convertí la clase con el error en línea en VB-NET pero aún no entiendo mucho. Aquí está la función que da el error arriba 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);
  }
}

Si se necesita el código fuente completo para esta clase, entonces puedo publicarlo en otro mensaje en este hilo o puede encontrarlo descargando el código en el sitio web mencionado anteriormente y echando un vistazo a la clase llamado MimeCode.cs.

¿Alguien que pueda ayudarme? ¿Puedo reescribir la función anterior de alguna manera para superar este problema?

Le agradezco de antemano su ayuda.

Un cordial saludo y un feliz año nuevo para todos ustedes.

Rgds, moster67

¿Fue útil?

Solución

CF .NET requiere que uses la firma: Método de codificación.GetString (matriz [], índice Int32, recuento de Int32), así que intenta usar:

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

Otros consejos

Si busca la clase de codificación en MSDN, encontrará información sobre la disponibilidad de métodos en el marco compacto.

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

En su caso, la propiedad System.Text.Encoding.Default es compatible con .NET Compact Framework 3.5, 2.0, 1.0, por lo que debe estar todo configurado.

Pero aquí está la cosa. MS a veces elimina los métodos de la implementación de la clase, o para ser sobrecargas precisas.

Mirando la documentación http://msdn.microsoft.com/en- us / library / system.text.encoding.getstring.aspx puede ver los iconos (pequeñas imágenes a la izquierda) que mientras .NET Compact Framework admite la clase de codificación, se eliminaron algunas sobrecargas.

Cuando pasa la matriz de bytes [] al método GetString, no puede encontrar esa sobrecarga, por lo que debe agregar un desplazamiento int y un recuento int.

El marco de trabajo compacto probablemente no admita la sobrecarga que toma solo una matriz de bytes. Pruebe la sobrecarga que toma la matriz de bytes, un índice de inicio y un recuento y asigne 0 como el índice de inicio y b.Longitud como la longitud.

Gracias a Michael, John y Rune por responder a mi pregunta. Al usar sus sugerencias, resolví el problema y logré compilar / compilar la biblioteca dirigida a CF.NET 3.5. Gracias también a ctacke por editar mi pregunta y hacerla más legible.

Por cierto, como mencioné en mi primera publicación, tuve otro problema que quería preguntar en otro hilo y que no me permitió construir la biblioteca para CF.NET, a saber, la línea:

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

En este caso, el problema es que CF.NET no reconoce " BodyName " ;. No pude encontrar ninguna forma alternativa o solución alternativa para obtener el conjunto de caracteres utilizado (BodyName recupera esta información), por lo que al final simplemente le asigné un valor fijo (iso-8859-1). Desafortunadamente, esto significa que la biblioteca no manejará todos los conjuntos de caracteres diferentes, pero al menos el código no se romperá y pude compilarlo. En cualquier caso, para mí es suficiente, ya que a mi aplicación no le importan los mensajes de texto, está usando correos electrónicos para enviar y obtener archivos adjuntos (similar a Gmail pero con mi propio proveedor).

Gracias de nuevo.

Saludos cordiales, moster67

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top