Übergeben Sie den Namen einer Methode als Parameter

8
%Vor%

Ich habe mehrere Methoden wie Method1 und Method2 oben, und ich möchte irgendwie den Namen der Methode als Parameter übergeben, ohne den Code manuell zu bearbeiten.

Ist das möglich?

    
gorkem 20.01.2014, 09:41
quelle

3 Antworten

4

Ausgezeichnete Antwort von Jon Skeet.

Wenn Sie jedoch .NET 4.5 nicht verwenden, können Sie reflection versuchen. Wie auch immer du das wissen solltest reflection must be used only when it is absolutely necessary. Do not over-use it for the sake of using it .

Zurückkommen, Du könntest etwas wie

machen %Vor%

In Ihrem Fall wäre es wie folgt,

%Vor%

BEARBEITEN:

Wie in den unten stehenden Kommentaren von @Jon Skeet's zu lesen ist, wenn Sie .Net 4.5 nette und nette Implementierung wünschen, schauen Sie sich das Micrsoft.Bcl NUGET Paket an.

    
now he who must not be named. 20.01.2014, 09:54
quelle
15

Ab C # 5 ist das sehr einfach mit Anrufer-Info-Attributen :

%Vor%

Damit das funktioniert:

  • Sie müssen den C # 5 (oder späteren) Compiler verwenden, sonst weiß er nicht, dass er speziell mit den Attributen
  • umgehen soll
  • Die Attribute müssen in Ihrer Zielumgebung vorhanden sein. Optionen dort:
    • In .NET 4.5 sind die Attribute einfach vorhanden
    • Für .NET 4 können Sie das Microsoft.Bcl NuGet-Paket verwenden
    • Kopieren Sie für frühere Versionen von .NET das Attribut-Deklaration in Ihren eigenen Code, stellen Sie sicher, dass Sie den gleichen Namespace verwenden. Wenn Sie später zu einer neuen .NET-Version wechseln, müssen Sie sie erneut entfernen.
Jon Skeet 20.01.2014 09:42
quelle
0

Aspect Oriented Programming (AOP) ermöglicht normalerweise, solche Aufgaben zu erfüllen. Sie können sich die kostenlose Version von PostSharp ansehen, insbesondere die Protokollierungsaspekt ist in Ihrem Fall hilfreich.

Ihr Code sieht dann so aus:

%Vor%

Sie können PostSharp bis zum .NET Framework 2.0 verwenden.

    
Thomas Weller 20.01.2014 09:45
quelle

Tags und Links