Dynamisches Verknoten von Events und Methoden

20/03/2010 - 03:55 von Carsten Posingies | Report spam
Hallo NG,

angenommen, ich habe folgende zwei Klassen:

public class A
{
[EventPublisher("topic://foo")]
public event EventHandler<FooEventArgs> FooPublisher;
}

und

public class B
{
[EventSubscriber("topic://foo")]
public void FooSubscriber(object sender, FooEventArgs e)
{
DoStuff();
}
}

Die Auflösung der Attribute làuft über nen Microkernel. So weit, so gut.
Aber wie krieg ich den Event an die Methode gedrahtet? Am liebsten über
ein weiteres Objekt, das den Event abonniert und die Methode aufruft.

Ich habe freilich schon ein bisschen im Netz gesucht und bin auf
ziemlich fancy stuff gestoßen, dynamisch erzeugte Assemblys,
System.Reflection.Emit und so.

Da gibt's aber doch bestimmt was von Ratiopharm.NET?

Danke wie immer vorab,

Carsten
 

Lesen sie die antworten

#1 Frank Dzaebel
20/03/2010 - 07:47 | Warnen spam
Hallo Carsten,

angenommen, ich habe folgende zwei Klassen [...]
[EventPublisher ... [EventSubscriber ...
Die Auflösung der Attribute làuft über nen Microkernel. So weit, so gut.
Aber wie krieg ich den Event an die Methode gedrahtet?



Nun, das steht normal in der Doku Deines Microkernel,
den Du ja nicht genannt hast.

Bei "Spring.NET" ist das AFAIK etwas wie:

// Create the Application context using configuration file
IApplicationContext ctx = ContextRegistry.GetContext();
// Gets the publisher from the application context
MyEventPublisher publisher =
(MyEventPublisher)ctx.GetObject("MyEventPublisher");
// Publishes events to the context.
ctx.PublishEvents( publisher );
_______________________

// Gets first instance of subscriber
MyEventSubscriber subscriber =
(MyEventSubscriber)ctx.GetObject("MyEventSubscriber");
// Gets second instance of subscriber
MyEventSubscriber subscriber2 =
(MyEventSubscriber)ctx.GetObject("MyEventSubscriber");
// Subscribes the first instance to the any events published by the type
MyEventPublisher
ctx.Subscribe( subscriber, typeof(MyEventPublisher) );

[Chapter 5. The IoC container]
http://www.springframework.net/doc-...ml#d4e1044
_______________________

Oder mal in einem anderen Kontext ein Beispiel über einen EventBroker /
EventManager:

[Magmasystems Blog: A Lightweight IntraApp Event Broker for C#/.NET]
http://magmasystems.blogspot.com/20...r-for.html
_______________________



Ich habe freilich schon ein bisschen im Netz gesucht und bin auf
ziemlich fancy stuff gestoßen, dynamisch erzeugte Assemblys,
System.Reflection.Emit und so.



Dann wàre der Zweck des Microkernel ja komplett verfehlt.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen