public ObservableBindBox(IConfigurationChangeNotifyable changeNotifyable, IConfiguration configuration, BindSettings bindSettings, ConfigBindMode mode, Action <Action> updater) : base(changeNotifyable, bindSettings, mode, updater) { Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); NotifyObject = bindSettings.Value as INotifyPropertyChanged; if (NotifyObject is null) { throw new InvalidCastException($"Can't case {changeNotifyable.GetType().FullName} to {typeof(INotifyPropertyChanged).FullName}"); } notifyPropertyMap = NotifyObject.GetType().GetProperties() .ToDictionary(x => x.Name, x => new PropertyBindBox(x)); propertyConfigMap = new Dictionary <string, PropertyBindBox>(); propertyVisitor = CompilePropertyVisitor.Instance; }