Methoden im Namespace c #

7

Gibt es eine Möglichkeit, eine Funktion innerhalb eines Namespace aufzurufen, ohne die Klasse in c # zu deklarieren?

Wenn ich zum Beispiel zwei Methoden hätte, die genau die gleichen sind und in allen meinen C # -Projekten verwendet werden sollen, gibt es eine Möglichkeit, diese Funktionen einfach in eine DLL zu übernehmen und einfach 'Using myTwoMethods' zu verwenden oben und starten Sie mit den Methoden, ohne die Klasse zu deklarieren?

Im Moment mache ich: MyClass.MyMethod ();

Ich möchte: MyMethod ();

Danke, Rohit

    
rkrishnan2012 12.05.2012, 23:41
quelle

4 Antworten

11

Sie können Methoden nicht außerhalb einer Klasse deklarieren, aber Sie können dies mithilfe einer statischen Hilfsklasse in einem Klassenbibliotheksprojekt tun.

%Vor%

Verwendung (nach dem Hinzufügen einer Referenz zu Ihrer Klassenbibliothek).

%Vor%     
David Anderson - DCOM 12.05.2012, 23:56
quelle
22

Aktualisierung für 2015: Nein, Sie können keine "freien Funktionen" in C # erstellen, aber beginnend mit C # 6 können Sie statische Funktionen aufrufen, ohne den Klassennamen zu erwähnen. C # 6 verfügt über die Funktion "using static" , die folgende Syntax zulässt:

%Vor%

SomeOtherFile.cs:

%Vor%     
Asik 13.05.2012 00:40
quelle
4

Im Anschluss an den Vorschlag zur Verwendung von Erweiterungsmethoden könnten Sie die Methode zu einer Erweiterungsmethode für System.Object machen, von der alle Klassen abgeleitet werden. Ich würde dies nicht befürworten, aber in Bezug auf Ihre Frage könnte das eine Antwort sein.

%Vor%

Sie könnten jetzt Code schreiben wie MyMethod(); wo auch immer Sie eine using SomeNamespace; haben, außer Sie sind in einer statischen Methode (dann müssten Sie Extensions.MyMethod(null) machen).

    
StellarEleven 13.05.2012 00:19
quelle
2

Je nachdem, um welche Art von Methode es sich handelt, können Sie nach Erweiterungsmethoden suchen:

Ссылка

Damit können Sie bestehenden Objekten einfach zusätzliche Funktionalität hinzufügen.

    
box86rowh 12.05.2012 23:43
quelle

Tags und Links