c # - Fehler Kompilieren Targeting Compact Net Framework 3.5 - Keine Überlastung bei der Methode 'GetString' Takes '1' Argumente

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

Frage

Ich habe eigentlich zwei Fragen in Bezug auf das gleiche Problem, aber ich denke, es ist besser, sie zu trennen, da ich sie nicht denken, beziehen.

Hintergrund: Ich bin eine Windows Mobile-Software in VB.NET schreiben, die unter anderem der Aufgabe muss an einen Mail-Server zum Senden und Abrufen von E-Mail verbinden. Als Ergebnis muß ich auch einen Mime-Parser (zur Decodierung und Codierung) die E-Mails, um die Anlagen zu erhalten. Zuerst dachte ich, wurde ich ein kleiner „Hack“ schreiben, dieses Problem umgehen (gewöhnliches String-Parsing mit), aber dann sah ich ein Projekt, in C # geschrieben, bei Codeproject , die ich dachte, dass ich in meiner Lösung implementieren würde. Ich weiß nicht viel über C #, so habe ich einfach eine Klasse-Bibliothek aus den Klassen gemacht und verwendet es in meinem VB.NET-Projekt. Diese Bibliothek funktioniert sehr gut, wenn ich das Net Framework bin richten sich jedoch auf normalen Windows-Computer, wenn ich die gleiche Bibliothek Targeting des Compact Net Framework schaffen würde, lief ich in Schwierigkeiten. Dies ist natürlich, da die Compact Net Framework Grenzen mehr gesetzt hat aber ich habe eigentlich nicht so viele Fehler -. Nur zwei obwohl im Code an verschiedenen Orten wiederholt

Eine des Fehlers ist derjenige, in dem Gegenstand dieser Frage zitiert d „Keine Überlast für Methode‚GetString‘nimmt‚1‘Argumente“. Wie oben erwähnt, weiß ich nicht viel über C #, damit ich die Klasse mit dem Fehler Online in VB-NET umgewandelt, aber immer noch verstehe ich nicht viel .. Hier ist die Funktion, die oben angegebene Fehler gibt:

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

Wenn der komplette Source-Code für diese Klasse benötigt wird, dann kann ich es schreibe in einer anderen Nachricht in diesem Thread oder Sie es durch Herunterladen des Codes auf der Web-Site finden oben genannten und durch einen Blick auf der Klasse mit genannt MimeCode.cs.

Wer kann mir helfen? Kann ich über Funktion umschreiben irgendwie dieses Problem zu überwinden?

Ich danke Ihnen im Voraus für Ihre Hilfe.

Mit freundlichen Grüßen und ein gutes neues Jahr an alle von euch.

Rgds, moster67

War es hilfreich?

Lösung

CF .NET erfordert, dass Sie die Signatur zu verwenden: Encoding.GetString Methode (array [], Int32 Index, Int32 count) so versuchen Sie es mit:

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

Andere Tipps

Wenn Sie die Klasse Encoding auf MSDN nachschlagen Sie Informationen über die Verfügbarkeit von Methoden im kompakten Rahmen finden werden.

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

In Ihrem Fall die System.Text.Encoding.Default Eigenschaft von .NET Compact Framework unterstützt 3.5, 2.0, 1.0, so sollten Sie alle eingestellt werden.

Aber hier ist das Ding. MS manchmal die von Methoden aus der Klasse Implementierung fallen, oder präzise Überlastungen zu sein.

in der Dokumentation der Suche http://msdn.microsoft.com/en- us / library / system.text.encoding.getstring.aspx , indem Sie auf die Symbole (kleine Bilder auf der linken Seite), dass während der .NET Compact Framework unterstützt die Codierung Klasse sagen kann, haben einige Überlastungen entfernt.

Wenn Sie die byte [] Array an die GetString-Methode übergeben, kann es nicht, dass die Überlastung finden, so dass Sie ein int Offset und int count haben hinzuzufügen.

Der kompakte Rahmen wahrscheinlich unterstützt nicht die Überlastung, die nur ein Byte-Array nimmt. Versuchen Sie, die Überlastung, die die Byte-Array, einen Startindex und eine Zählung und geben Sie es 0 als Startindex und b.length wie die Länge nimmt.

Dank Michael, John und Rune für auf meine Frage antworten. Durch Ihre Vorschläge mit, beschloß ich, das Problem und ich es geschafft, zu kompilieren / bauen die Bibliothek Targeting des CF.NET 3.5. Vielen Dank auch für die Bearbeitung meiner Frage an ctacke und macht es besser lesbar.

BTW, wie in meinem ersten Beitrag erwähnt, hatte ich ein anderes Problem, das ich in einem anderen Thread fragen gemeint und welche erlauben Sie mich nicht die Bibliothek für CF.NET aufzubauen, und zwar die Zeile:

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

In diesem Fall ist das Problem, dass die CF.NET nicht „Bodynamen“ nicht erkennt. Ich konnte keine alternative Wege oder Abhilfen finden den Zeichensatz verwendet, zu erhalten (Bodyname ruft diese Informationen) so am Ende einfach ich es einen festen Wert (iso-8859-1) zugeordnet. Das bedeutet leider, dass die Bibliothek nicht alle anderen Zeichensätze verarbeiten da draußen, aber zumindest wird der Code nicht brechen, und ich war in der Lage, es zu kompilieren. Auf jedem Fall für mich ist es genug, da meine Bewerbung um die Text-Nachrichten ist es egal - es ist E-Mails, um mit Anhängen (ähnlich wie Google Mail-Laufwerk, aber mit meinem eigenen Provider) zu senden und erhalten

.

Vielen Dank noch einmal.

Mit freundlichen Grüßen, moster67

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top