public ObservableByTracking() { _expando = new Dictionary <string, ObservablePropertyContext>(); var properties = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList(); foreach (var property in properties) { var valueContext = new ObservablePropertyContext(property.Name, property.PropertyType) { Value = GetDefault(property.PropertyType) }; _expando[BuildKey(valueContext)] = valueContext; } }
private static string BuildKey(ObservablePropertyContext observablePropertyContext) { return($"{observablePropertyContext.Type.Name}.{observablePropertyContext.Name}"); }