public void Set(ITargetedBind targeted, IValueInterface <T> valueInterface) { var id = targeted.TargetedId; lock (this) { Interfaces[id] = valueInterface; } }
public static void Remove(ITargetedBind targeted) { lock (Impls) { foreach (var item in Impls) { item.Remove(targeted); } } }
public new void Remove(ITargetedBind targeted) { var id = targeted.TargetedId; if (id != 0) { lock (this) { Interfaces.Remove(id); } } }
public IValueInterface <T> Get(ITargetedBind targeted) { var interfaces = Interfaces; var id = targeted?.TargetedId ?? 0; if (id != 0 && interfaces.TryGetValue(id, out var value)) { return(value); } return(DefaultInterface); }
public static void Set <T>(ITargetedBind targeted, IValueInterface <T> valueInterface) { if (valueInterface is null) { throw new ArgumentNullException(nameof(valueInterface)); } lock (targeted) { targeted.MakeTargetedId(); } if (!(ValueInterface <T> .Content is Impl <T>)) { Impl <T> .DefaultInterface = ValueInterface <T> .Content; ValueInterface <T> .SetInterface(Impl <T> .Instance); } Impl <T> .Instance.Set(targeted, valueInterface); }
public static IValueInterface <T> Get <T>(ITargetedBind targeted) { return(Impl <T> .Instance.Get(targeted)); }
/// <summary> /// 设置支持针对性接口的对象指定类型的值读写接口。 /// </summary> /// <typeparam name="T">指定类型</typeparam> /// <param name="targeted">支持针对性接口的对象</param> /// <param name="valueInterface">值读写接口</param> public static void SetValueInterface <T>(this ITargetedBind targeted, IValueInterface <T> valueInterface) { ValueInterface <T> .SetTargetedInterface(targeted, valueInterface); }
/// <summary> /// 设置支持针对性接口的对象的 DateTimeOffset 格式。 /// </summary> /// <param name="targeted"></param> /// <param name="format"></param> public static void SetDateTimeOffsetFormat(this ITargetedBind targeted, string format) { ValueInterface <DateTimeOffset> .SetTargetedInterface(targeted, new DateTimeOffsetInterface(format)); }
/// <summary> /// 获取一个支持针对性接口的对象的默认绑定标识。 /// </summary> /// <param name="targeted">支持针对性接口的对象</param> /// <returns>返回绑定标识</returns> public static XBindingFlags GetXObjectRWFlags(this ITargetedBind targeted) { return(ValueInterface <XAssistant> .GetTargetedInterface(targeted) is XAssistant assistant ? assistant.Flags : XObjectRW.DefaultBindingFlags); }
/// <summary> /// 设置对象读写器接口为 XObjectInterface,并设置一个支持针对性接口的对象的默认绑定标识。 /// </summary> /// <param name="targeted">支持针对性接口的对象</param> /// <param name="flags">默认绑定标识</param> public static void SetXObjectRWFlags(this ITargetedBind targeted, XBindingFlags flags) { ValueInterface.DefaultObjectInterfaceType = typeof(XObjectInterface <>); ValueInterface <XAssistant> .SetTargetedInterface(targeted, new XAssistant(flags)); }
/// <summary> /// 获取针对某一目标值读写器的读写接口实例。 /// </summary> /// <param name="targeted">目标</param> /// <returns>返回读写接口实例</returns> public static IValueInterface <T> GetTargetedInterface(ITargetedBind targeted) { return(TargetedValueInterface.Get <T>(targeted)); }
public static void SetTargetedInterface(ITargetedBind targeted, IValueInterface <T> valueInterface) { TargetedValueInterface.Set(targeted, valueInterface); }
/// <summary> /// 设置支持针对性接口的对象指定类型的格式。 /// </summary> /// <typeparam name="T">指定类型</typeparam> /// <param name="targeted">支持针对性接口的对象</param> /// <param name="format">格式</param> public static void SetValueFormat <T>(this ITargetedBind targeted, string format) where T : IFormattable { ValueInterface <T> .SetTargetedInterface(targeted, new SetValueFormatInterface <T>(ValueInterface <T> .Content, format)); }