/// <summary> /// Refreshes the specified arguments. /// </summary> /// <param name="args">The arguments.</param> public void Refresh(LocalizationRefreshArgs args) { var val = args.Property.GetValue(args.Invocation.InvocationTarget, null) as IEnumerable <ILocalizableModel>; if (val?.Count() > 0) { foreach (var item in val) { var props = item.GetType().GetProperties().Where(p => Attribute.IsDefined(p, typeof(LocalizationAttributeBase))); if (props.Count() > 0) { foreach (var prop in props) { if (prop.CanWrite) { var oldVal = prop.GetValue(item, null); item.OnPropertyChanging(prop.Name); prop.SetValue(item, null); item.OnPropertyChanged(prop.Name); item.OnPropertyChanging(prop.Name); prop.SetValue(item, oldVal); item.OnPropertyChanged(prop.Name); } } } } } }
/// <summary> /// Refreshes the specified arguments. /// </summary> /// <param name="args">The arguments.</param> public void Refresh(LocalizationRefreshArgs args) { if (args.Property.GetValue(args.Invocation.InvocationTarget, null) is ILocalizableModel val) { var props = val.GetType().GetProperties().Where(p => Attribute.IsDefined(p, typeof(LocalizationAttributeBase))); if (props.Count() > 0) { foreach (var prop in props) { if (prop.CanWrite) { var oldVal = prop.GetValue(val, null); ((ILocalizableModel)args.Invocation.Proxy).OnPropertyChanging(prop.Name); prop.SetValue(val, null); ((ILocalizableModel)args.Invocation.Proxy).OnPropertyChanged(prop.Name); ((ILocalizableModel)args.Invocation.Proxy).OnPropertyChanging(prop.Name); prop.SetValue(val, oldVal); ((ILocalizableModel)args.Invocation.Proxy).OnPropertyChanged(prop.Name); } } } } }
/// <summary> /// Determines whether this instance can refresh the specified arguments. /// </summary> /// <param name="args">The arguments.</param> /// <returns><c>true</c> if this instance can refresh the specified arguments; otherwise, <c>false</c>.</returns> public bool CanRefresh(LocalizationRefreshArgs args) { return(typeof(IEnumerable <ILocalizableModel>).IsAssignableFrom(args.Property.PropertyType)); }