示例#1
0
        protected TKey GetId(IReflectorMetadataProvider request)
        {
            var code = request.GetAccesor().GetPropertyCode(nameof(IEntity <TKey> .Id));
            var id   = (TKey)request.GetAccesor().GetValue(request, code);

            return(id);
        }
        public static Dictionary <int, object> ToCodedDictionary(this IReflectorMetadataProvider obj)
        {
            var data    = new Dictionary <int, object>();
            var accesor = obj.GetAccesor();

            foreach (var code in accesor.GetPropertyCodes())
            {
                data.Add(code, accesor.GetValue(obj, code));
            }

            return(data);
        }
        public static IReflectorMetadataProvider Merge(this IReflectorMetadataProvider obj, IDictionary <int, object> data)
        {
            var accesor = obj.GetAccesor();

            foreach (var kv in data)
            {
                var code = kv.Key;
                var type = accesor.GetPropertyType(code);
                accesor.SetValue(obj, code, BinaryConvert.ConvertTo(type, kv.Value));
            }

            return(obj);
        }
        public static T Map <T>(this IReflectorMetadataProvider obj) where T : IReflectorMetadataProvider, new()
        {
            var accesor       = obj.GetAccesor();
            T   clone         = new T();
            var targetAccesor = clone.GetAccesor();

            foreach (var code in accesor.GetPropertyCodes())
            {
                targetAccesor.SetValue(clone, code, accesor.GetValue(obj, code));
            }

            return(clone);
        }
示例#5
0
        private void WriteObject(Stream stream, IReflectorMetadataProvider obj)
        {
            var accesor = obj.GetAccesor();
            var props   = accesor.GetPropertyCodes();

            WriteLenght(stream, props.Length, Types.TYPE_CODED_MAP_8, Types.TYPE_CODED_MAP_16, Types.TYPE_CODED_MAP_32);

            foreach (var code in props)
            {
                WriteInteger(stream, code);
                Serialize(stream, accesor.GetValue(obj, code));
            }
        }
        public static void SetValue(this IReflectorMetadataProvider obj, string propertyName, object value)
        {
            var accesor = obj.GetAccesor();

            accesor.SetValue(obj, accesor.GetPropertyCode(propertyName), value);
        }
        public static object GetValue(this IReflectorMetadataProvider obj, string propertyName)
        {
            var accesor = obj.GetAccesor();

            return(accesor.GetValue(obj, accesor.GetPropertyCode(propertyName)));
        }