public delegate void Del(int portfolioId);
private static Del _listeners;
public static void register(Del listener){
private void notify(int thingThatHappened){
_listeners(thingThatHappened);
public void SavePortfolioElt(int portfolioId){
Console.WriteLine($"Accumulation Completed for Portfolio[{portfolioId}]");
public class OnDemandManager{
public OnDemandManager(){
Notifier.register(this.NewPortfolio);
public void NewPortfolio(int portfolioId){
Console.WriteLine($"OnDemandManager: Just go notified a new Portfolio {portfolioId} is available");
public class AnotherManager{
public AnotherManager(Notifier n)
Notifier.register(NewPortfolio);
public void NewPortfolio(int portfolioId){
Console.WriteLine($"AnotherManager: Just go notified a new Portfolio {portfolioId} is available");
public static void Main()
var notifier = new Notifier();
var listener1 = new OnDemandManager();
var listener2 = new AnotherManager(notifier);
notifier.SavePortfolioElt(40899);
Console.WriteLine("Hello World");