Пример #1
0
            public void Set(ITargetedBind targeted, IValueInterface <T> valueInterface)
            {
                var id = targeted.TargetedId;

                lock (this)
                {
                    Interfaces[id] = valueInterface;
                }
            }
Пример #2
0
 public static void Remove(ITargetedBind targeted)
 {
     lock (Impls)
     {
         foreach (var item in Impls)
         {
             item.Remove(targeted);
         }
     }
 }
Пример #3
0
            public new void Remove(ITargetedBind targeted)
            {
                var id = targeted.TargetedId;

                if (id != 0)
                {
                    lock (this)
                    {
                        Interfaces.Remove(id);
                    }
                }
            }
Пример #4
0
            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);
            }
Пример #5
0
        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);
        }
Пример #6
0
 public static IValueInterface <T> Get <T>(ITargetedBind targeted)
 {
     return(Impl <T> .Instance.Get(targeted));
 }
Пример #7
0
 /// <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);
 }
Пример #8
0
 /// <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));
 }
Пример #9
0
 /// <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);
 }
Пример #10
0
        /// <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));
        }
Пример #11
0
 /// <summary>
 /// 获取针对某一目标值读写器的读写接口实例。
 /// </summary>
 /// <param name="targeted">目标</param>
 /// <returns>返回读写接口实例</returns>
 public static IValueInterface <T> GetTargetedInterface(ITargetedBind targeted)
 {
     return(TargetedValueInterface.Get <T>(targeted));
 }
Пример #12
0
 public static void SetTargetedInterface(ITargetedBind targeted, IValueInterface <T> valueInterface)
 {
     TargetedValueInterface.Set(targeted, valueInterface);
 }
Пример #13
0
 /// <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));
 }