2009-07-22 8 views
4

die Beratung Nach bekam auf another question of mine konvertierte ich den Code dort zitierte mit Postsharp verwendet werden:Postscharfe: Wie funktioniert es?

Attribut:

[Serializable] 
public sealed class InitAttribute : OnMethodBoundaryAspect 
{ 
    public override void OnEntry(MethodExecutionEventArgs eventArgs) 
    { 
     Console.Write("Works!"); 
    } 
} 


static class Logger 
{ 
    public static string _severity; 

    public static void Init(string severity) 
    { 
     _severity = severity; 
    } 

    [Init()] 
    public static void p() 
    { 
     Console.WriteLine(_severity); 
    } 
} 

Trotzdem ist kein Ergebnis bekommen kann („! Works“ auf der Konsole) . Ein Haltepunkt innerhalb des PostSharp-Attributs zeigt, dass es nie eingegeben wird.

Hilfe? Danke im Voraus.

+0

Können wir ein Beispiel für die Verwendung Ihres Attributs erhalten? Haben Sie auch nach Kompilierungswarnungen gesucht? –

+0

Hallo Chris. Keine Warnungen. Plus, das Code-Beispiel ist schon da, denke ich. – pistacchio

Antwort

10

PostSharp verarbeitet die kompilierte IL-Binärdatei und fügt die gewünschte Aktion zur Methode body hinzu, die mit dem Attribut versehen ist. Das Attribut wird alleine nichts tun. So funktioniert CLR. Es behandelt nur Attribute wie Daten, nicht ausführbaren Code. Ohne running PostSharp on the compiled code erhalten Sie nichts Besonderes.

+0

Auf dem PostSharp Tutorial auf CodeProject dieses Bit des Codes scheint es genau zu sein, was ich will, nur trace.write statt console.write. es funktioniert sowieso nicht für mich, auch nicht mit trace.write. http://www.codeproject.com/KB/cs/ps-custom-attributes-1.aspx – pistacchio

+0

Führen Sie PostSharp auf Ihrer Binärdatei nach der Kompilierung? –

+0

nein, innerhalb des Codes – pistacchio

3

Sie müssen das PostSharp-Befehlszeilendienstprogramm nicht ausführen, aber Sie müssen es ordnungsgemäß installieren.

Der einfachste Weg ist, PostSharp mit dem Installer zu installieren.

Andernfalls sollten Sie Ihre Projektdatei mit einem Texteditor as described in documentation bearbeiten.

+1

URL nicht gefunden jetzt ... – Nock

+0

Hier ist der Arbeitslink: http://doc.postsharp.net/##conceptual-documentation – Jowen