Ist es in C # möglich, über eine statische Methode in verschiedenen Klassen auf eine Instanzvariable zuzugreifen, ohne Parameterübergabe zu verwenden?
In unserem Projekt habe ich eine Klasse Data access layer
, die viele statische Methoden hat. In diesen Methoden wurde der Wert für SqlCommand
timeout fest codiert. In einer anderen Klasse ( Dac
) in unserem Framework gibt es viele Instanzmethoden, die diese statischen Methoden aufrufen.
Ich möchte nicht zu viel mit Parameterübergabe programmieren. Haben Sie eine andere Lösung, die einfacher ist als die Parameterübergabe?
Ja, es ist möglich, von einer statischen Methode auf eine Instanzvariable zuzugreifen, ohne einen Parameter zu verwenden, aber nur, wenn Sie über eine Instanz, die als statisch deklariert ist, darauf zugreifen können. Beispiel:
%Vor%Eine statische Methode hat keine Instanz, mit der sie arbeiten könnte, also nein. Ohne Parameterübergabe ist das nicht möglich.
Eine andere Option für Sie könnte die Verwendung einer statischen Instanz der Klasse sein (Marks Beispiel zeigt diese Methode bei der Arbeit), obwohl ich aus Ihrem Beispiel nicht sicher bin, dass das Ihr Problem lösen würde.
Ich persönlich denke, Parameterübergabe wird die beste Option sein. Ich bin mir immer noch nicht sicher, warum du dich davor zurückhalten willst.
Sicher, Sie könnten eine Instanz als Parameter an die Methode übergeben. Wie:
%Vor%Aber es wäre nicht möglich, sonst irgendwelche Instanzvariablen zu bekommen.
Ja, solange es eine Instanz eines Objekts im Geltungsbereich hat. Singletons zum Beispiel oder Objekte, die innerhalb der Methode selbst erstellt wurden.
Nehmen Sie zum Beispiel ein häufiges Szenario:
%Vor%Nein, kannst du nicht.
Wenn Sie auf eine Instanzvariable zugreifen möchten, sollte Ihre Methode per Definition nicht statisch sein.