Laden...

Method exited event

Erstellt von rollerfreak2 vor 12 Jahren Letzter Beitrag vor 12 Jahren 742 Views
rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 12 Jahren
Method exited event

Hallo zusammen,

habe eine allgemeine Frage bezüglich meines Vorhabens. Ich möchte benachtigt werden wenn eine Methode verlassen wird. Dies soll jedoch "automatisch" passieren. Bsp.


public void SomeMethod()
{
    StaticClass.DoSomething();
}

public static class StaticClass
{
    public static void DoSomething()
    {
        //hier komme ich z.b. an den StackFrame ran, daher bekomme ich raus von
        //welcher Methode ich gerufen wurde, es gibt aber kein event wenn dieser
        //SatckFrame zerstört wird
    }
} 

Am StackFrame habe ich nix gefunden. Ist das irgendwie mit Reflection möglich bzw. gibt es überhaupt eine Möglichkeit sich an sowas dran zu hängen?

Again what learned...

5.742 Beiträge seit 2007
vor 12 Jahren

Hallo rollerfreak2,

suchst du evtl. etwas in Richtung aspektorientierter Programmierung (AOP)?
Dann wäre PostSharp etwas für dich.

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 12 Jahren

PostSharp kenne ich, aber einen Aspekt will ich eigentlich nicht programmieren, weil der dann an jeder Methode ran müsste. Ich suche einen allgemeinen Mechanismus bei dem ich mich auf das verlassen der Methode von der die Statische Methode gecalled wurde registrieren kann.

Again what learned...

F
10.010 Beiträge seit 2004
vor 12 Jahren

Und wo soll der herkommen?

Du kannst nur per AOP etwas nachträglich in den Code einweben lassen, oder es vorher in der Funktion vorgeben.
Alternativ wäre ein Proxy möglich, das war es dann aber auch schon.

Wozu meinst du das brauchen zu wollen?

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 12 Jahren

Für ein statischen MockRepository Wrapper. So einen gibt es schon von Rhino.Mocks jedoch müssen dort alle Expectations manuell verifiziert werden. Das ist nervig und Fehleranfällig. Nun habe ich das vorerst mit einem Decorator gelöst der eine Art Transaction aufzieht die IDisposable implementiert und die dann im Dispose alle erzeugten Mocks verifiziert. Dazu muss also in jedem Test einfach ein using Statement eingefügt werden und alle manuellen verifiy entfallen.

Wenn ich nun aber die Möglichkeit hätte bei verlassen der Methode einen call zu bekommen, könnten ich diese Mechanismus völlig ohne das der Test schreiber etwas machen muss implementieren. Quasi mit Hilfe des Call Stacks und des calls halt.

Again what learned...

5.742 Beiträge seit 2007
vor 12 Jahren

Wenn ich nun aber die Möglichkeit hätte bei verlassen der Methode einen call zu bekommen,

Da bietet sich in diesem Zusammenhang TearDown an.

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 12 Jahren

Ich habe es jetzt mit dem UNit Addin (EventListener) gemacht. Da kann man sich benachichtigen lassen wenn ein Test finished ist. Da hätte ich auch eher drauf kommen können, dachte nur nicht das NUnit sowas anbietet.

Again what learned...