C# realization observer pattern