void Main() { dynamic employee = new ExpandoObject(); ((INotifyPropertyChanged)employee).PropertyChanged += new PropertyChangedEventHandler(HandlePropertyChanges); employee.Name = "John Smith"; employee.Name = "John Smith2"; var expando = employee as IDictionary; expando["Name"] = "John Smith3"; } private static void HandlePropertyChanges( object sender, PropertyChangedEventArgs e) { Console.WriteLine("{0} has changed.", e.PropertyName); } // Output: // Name has changed. // Name has changed. // Name has changed.