In meiner Anwendung habe ich eine Methode, um zu überprüfen, ob eine Variable eine Zahl ist oder nicht. Diese Methode wird mehr als einmal in meinem Code aufgerufen. Die Methode wird von den Codebehind-Seiten aufgerufen. Wie diese Methode habe ich mehr Methoden, die ich nicht in einer einzigen Klasse (wie Staff) platzieren kann. Wo sollte ich diese Art von Methoden einsetzen?C# Wohin mit allgemeinen Methoden?
Antwort
In einer Dienstprogrammklassendatei.
Ich nehme an, dass Sie auf eine String-Variable verweisen. Wenn das der Fall ist würde ich eine von zwei Dinge vorschlagen
Wenn Sie mit PRE .NET 3.0 Sie es in einem String Klasse setzen könnte etwa so:
public static class StringHelper { public static bool StringIsNumber(String value) { //do your test here } }
Wenn Sie mit POST .NET 3.0 Sie konnten sie als Erweiterungsmethoden Refactoring und tun so etwas wie dieses
public static class StringExtensions { public bool IsNumber(this String value) { //do your test here } }
Wie die Idee einer Erweiterungsmethode – Martijn
Klingt wie Sie könnte in der Lage sein, die eingebauten Funktionen int.TryParse(string, out int)
oder double.TryParse(string, out double)
zu verwenden, die beide einen bool zurückgeben, aber in jedem Fall für cks Vorschlag gehen.
In C# 3.0 würde ich wahrscheinlich dies zu einer Erweiterungsmethode für die String-Klasse machen. Ich würde alle meine String-Erweiterungen in einer einzigen statischen Klasse gruppieren, um die Lesbarkeit zu verbessern.
public static class StringExtensions
{
public static bool IsNumeric(this string source)
{
if (string.IsNullOrEmpty(source))
{
return false;
}
...
}
public static bool IsMoney(this string source)
{
...
}
...
}
Verbrauch:
if (amountLabel.Text.IsNumeric())
{
...
}
Ist es möglich, eine Erweiterungsmethode für Request.Querystring ["Wert"] zu schreiben? – Martijn
Da die Item-Eigenschaft einer NameValueCollection eine Zeichenfolge ist, sollte diese Erweiterungsmethode darauf angewendet werden. Wenn Sie etwas wie Request.QueryString.IsNumeric ("value") haben möchten, müssen Sie "this" vom Typ NameValueCollection erstellen und die Methode entsprechend umschreiben. – tvanfosson
@martijn: 'TypeOf (Querystring [" Wert "]) == System.String ist es nicht? So würde 'MyStringExtensionsClass.ExtensionMethodName (this System.String theString, ...) {...} 'wahrscheinlich ausreichen – Kris
- 1. Wohin mit allgemeinen beschreibbaren Anwendungsdateien?
- 2. Wohin mit Helper-Methoden nur für Controller?
- 3. Ziel C, Wohin mit Mausereignismethoden?
- 4. Wohin mit Methoden, die von mehreren Klassen verwendet werden?
- 5. Wohin mit "WSGIPassAuthorization On"?
- 6. C# Erstellen Sie einen allgemeinen Methodenparameter
- 7. C# Erweiterung Methoden für ASP.NET oder C# im Allgemeinen (. NET 3.5)
- 8. Nunit-Basisklasse mit allgemeinen Tests
- 9. Wohin mit den Umwandlungsfunktionen?
- 10. Wohin mit PowerShell-Skripten?
- 11. So speichern Sie Methoden in einem Stapel oder einer Liste im Allgemeinen C#
- 12. Fehler einen allgemeinen Rückgabetyp in C++ 11
- 13. C# Parsing HTML für den allgemeinen Gebrauch?
- 14. C# Schnittstellen mit optionalen Methoden
- 15. Django: Wohin mit Hilfsfunktionen?
- 16. Wohin mit CSS-Pseudoklassen?
- 17. Wohin mit jQuery.expr code?
- 18. Wohin mit Projektdateien?
- 19. Wohin mit einer Eigenschaftendatei?
- 20. Wohin mit Ressourcen?
- 21. Wohin mit .hgignore?
- 22. Wohin mit den Datenbankverbindungseinstellungen?
- 23. Wohin mit den Leuchten?
- 24. Wohin mit ActiveModel :: Validator?
- 25. Wohin mit dem Container?
- 26. Unicode - im Allgemeinen mit ihm in C++ arbeiten
- 27. Wohin gehst du für C++ - Nachrichten?
- 28. C# Wohin mit Code, der GUI-Daten abruft?
- 29. OpenCV Linienerkennung im Allgemeinen
- 30. Wohin mit der UITableViewCell-Logik?
Yep. Ich würde diese definitiv in eine statische Klasse setzen. – jgallant
Außerdem mache ich das normalerweise in einer Klasse ohne Namespace – annakata
@annakata Das Problem mit dem Nicht-Platzieren eines Namensraums ist später, Sie erhalten eine Menge "Common" Logik, die dann ein bisschen unordentlich wird. –