public DefaultPropertyValueAccessor(T instance, IPropertyValueGetter getter, IPropertyValueSetter setter) { _getter = getter is not null ? getter.Invoke : DefaultPropertyValueGetter.DefaultFunc; _setter = setter is not null ? setter.Invoke : DefaultPropertyValueSetter.DefaultFunc; _type = typeof(T); _instance = instance; }
public static IPropertyValueAccessor GetValueAccessor <T>(this T that, IPropertyValueGetter getter, IPropertyValueSetter setter) => A.GetValueAccessor(that, getter, setter);
public static IPropertyValueAccessor GetValueAccessor <T>(T that, IPropertyValueGetter getter, IPropertyValueSetter setter) { return(new DefaultPropertyValueAccessor <T>(that, getter, setter)); }
public static IPropertyValueAccessor GetValueAccessor(this object that, Type type, IPropertyValueGetter getter, IPropertyValueSetter setter) => A.GetValueAccessor(that, type, getter, setter);
public static IPropertyValueAccessor GetValueAccessor(object that, Type type, IPropertyValueGetter getter, IPropertyValueSetter setter) { return(new DefaultPropertyValueAccessor(type, that, getter, setter)); }
/// <summary> /// Try to set a value to the specified property name in the that.<br /> /// 尝试向对象中的指定属性名称设置值。 /// </summary> /// <param name="that"></param> /// <param name="propertyName"></param> /// <param name="bindingAttr"></param> /// <param name="value"></param> /// <param name="propertyValueSetter"></param> public static bool TrySetPropertyValue <T, TVal>(T that, string propertyName, BindingFlags bindingAttr, TVal value, IPropertyValueSetter propertyValueSetter) { return(Try.Invoke(() => propertyValueSetter .SafeRefValue(DefaultPropertyValueSetter.Instance) .Invoke(typeof(T), that, propertyName, bindingAttr, value)) .IsSuccess); }
/// <summary> /// Try to set a value to the specified property name in the that.<br /> /// 尝试向对象中的指定属性名称设置值。 /// </summary> /// <param name="that"></param> /// <param name="propertyName"></param> /// <param name="bindingAttr"></param> /// <param name="value"></param> /// <param name="propertyValueSetter"></param> public static bool TrySetPropertyValue(object that, string propertyName, BindingFlags bindingAttr, object value, IPropertyValueSetter propertyValueSetter) { return(Try.Invoke(() => propertyValueSetter .SafeRefValue(DefaultPropertyValueSetter.Instance) .Invoke(that.GetType(), that, propertyName, bindingAttr, value)) .IsSuccess); }
/// <summary> /// Set a value to the specified property name in the that.<br /> /// 向对象中的指定属性名称设置值。 /// </summary> /// <param name="that"></param> /// <param name="propertyName"></param> /// <param name="bindingAttr"></param> /// <param name="value"></param> /// <param name="propertyValueSetter"></param> public static void SetPropertyValue <T, TVal>(T that, string propertyName, BindingFlags bindingAttr, TVal value, IPropertyValueSetter propertyValueSetter) => propertyValueSetter.SafeRefValue(DefaultPropertyValueSetter.Instance).Invoke(typeof(T), that, propertyName, bindingAttr, value);
/// <summary> /// Set a value to the specified property name in the that.<br /> /// 向对象中的指定属性名称设置值。 /// </summary> /// <param name="that"></param> /// <param name="propertyName"></param> /// <param name="bindingAttr"></param> /// <param name="value"></param> /// <param name="propertyValueSetter"></param> public static void SetPropertyValue(object that, string propertyName, BindingFlags bindingAttr, object value, IPropertyValueSetter propertyValueSetter) => propertyValueSetter.SafeRefValue(DefaultPropertyValueSetter.Instance).Invoke(that.GetType(), that, propertyName, bindingAttr, value);