2009-05-28 17 views
2

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

9

In einer Dienstprogrammklassendatei.

+0

Yep. Ich würde diese definitiv in eine statische Klasse setzen. – jgallant

+0

Außerdem mache ich das normalerweise in einer Klasse ohne Namespace – annakata

+2

@annakata Das Problem mit dem Nicht-Platzieren eines Namensraums ist später, Sie erhalten eine Menge "Common" Logik, die dann ein bisschen unordentlich wird. –

3

Ich nehme an, dass Sie auf eine String-Variable verweisen. Wenn das der Fall ist würde ich eine von zwei Dinge vorschlagen

  1. 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 
        } 
    } 
    
  2. 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 
        } 
    } 
    
+0

Wie die Idee einer Erweiterungsmethode – Martijn

1

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.

4

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()) 
{ 
    ... 
} 
+0

Ist es möglich, eine Erweiterungsmethode für Request.Querystring ["Wert"] zu schreiben? – Martijn

+0

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

+0

@martijn: 'TypeOf (Querystring [" Wert "]) == System.String ist es nicht? So würde 'MyStringExtensionsClass.ExtensionMethodName (this System.String theString, ...) {...} 'wahrscheinlich ausreichen – Kris