Ich versuche, das Ereignis Aggregator-Muster auf einfache Weise zu implementieren, um es Schritt für Schritt zu lernen. Aber ich habe kein Buch oder ein nettes Video-Tutorial gefunden, das über die Implementierung spricht.
Ich habe gerade ein paar gute Artikel wie diese gefunden http://weblogs.asp.net/rashid/archive/2009/03/05/use-event-aggregator-to-make-your-application-more-extensible.aspx und http://martinfowler.com/eaaDev/EventAggregator.html der erste Artikel ist zu groß, um mich das Muster zu verstehen und die zweite ist nicht abgeschlossen :).
Durch die Art, wie ich meine Klassen erstellt:Versucht, das Ereignis Aggregator Muster zu verstehen
public class Member
{
public int ID { get; set; }
public string UserName { get; set; }
}
public class MemberService
{
public void CommentSubmited()
{
// increase member score and do some other logic.
}
}
public class Comment
{
public int ID { get; set; }
public string CommentBody { get; set; }
public Member ByMember { get; set; }
}
public class CommentService
{
public void SubmitNewComment(Member member, string commentBody, EventAggregator eventAggregator)
{
Comment comment = new Comment();
comment.ByMember = member;
comment.CommentBody = commentBody;
db.SaveComment(comment); // save comment to the db
//eventAggregator.GetEvent<CommentSubmited>.Fire();
}
}
public class EventAggregator
{
public void RegisterEvent()
{
}
public void RemoveEvent()
{
}
}
Und was ich will, ist eine generische Art und Weise zu schaffen, so dass, wann immer Sie einen neuen Beitrag der CommentSubmited()
Methode Fire erstellt.
Ich möchte es generisch, weil es später mehr Dienste wie RateService, QuestionService, .... geben wird und jeder eine XXXSubmited()
-Methode in der MemberService-Klasse haben wird.
Ich hoffe, Sie verstanden, was ich lernen will, fragen Sie mich, wenn Sie wollen, dass ich die Dinge klarer mache.
Hinweis Ich habe die Generic Delegates topic überprüft und dachte, es könnte mir in dieser Ausgabe helfen, aber konnte es nicht so machen, wie ich es wollte.
der Artikel ist nett, aber ich kann mir nicht vorstellen, wie das ISubject und Subject aussehen wird, er schrieb sie nicht in seinem Beispiel. –
Für den Fall, dass jemand hier herein stolpert, hat Amr auf der Suche nach ISubject gepostet und jemand hat darauf hingewiesen, dass sie in Reactive Extensions sind: http://stackoverflow.com/questions/3439419/how-isubject-and-subject-will-look-like- in-diesem-Beispiel-und-die-Probe-Verwendung-t – JohnMetta