Esempio n. 1
0
        internal static ObjectData ToData(ObjectDataConverter converter,
                                          object @object, ObjectDataConvertSettings settings, ObjectDataConvertSession session)
        {
            if (session == null)
            {
                session = new ObjectDataConvertSession();
            }
            if (session.TryGetConvertedData(@object, out var data))
            {
                return(data);
            }

            if (settings == null)
            {
                settings = ObjectDataConvertSettings.Default;
            }

            var type = @object.GetType();

            if (converter == null)
            {
                converter = SelectConverter(settings, type);
            }

            var members = converter.ToDataMembers(@object, settings, session);

            data = new ObjectData(type, members);
            session.AddConverted(@object, data);
            return(data);
        }
Esempio n. 2
0
            public Operation(ICommand command)
            {
                _command = command;

                _dataConvertSettings = new ObjectDataConvertSettings();
                _dataSession         = new ObjectDataConvertSession();
            }
Esempio n. 3
0
        public object ToObject(ObjectData data,
                               ObjectDataConvertSettings settings = null, ObjectDataConvertSession session = null)
        {
            Ensure.Argument.NotNull(data, nameof(data));

            return(ToObject(this, data, settings, session));
        }
Esempio n. 4
0
        protected virtual IEnumerable <ObjectData.Member> ToDataMembers(
            object @object, ObjectDataConvertSettings settings, ObjectDataConvertSession session)
        {
            var type = @object.GetType();

            return(SelectDataMembers(type).Select(am => new ObjectData.Member(
                                                      am.Name, Data.ToData(am.GetValue(@object), settings, session))));
        }
Esempio n. 5
0
 private static ObjectDataConverter SelectConverter(ObjectDataConvertSettings settings, Type convertType)
 {
     if (settings == null)
     {
         settings = ObjectDataConvertSettings.Default;
     }
     return(SelectConverter(settings.Selector, settings.Converters, convertType));
 }
Esempio n. 6
0
 public static Data ToData(object @object,
                           ObjectDataConvertSettings settings = null, ObjectDataConvertSession session = null)
 {
     if (ValueData.TryCreate(@object, out var valueData))
     {
         return(valueData);
     }
     return(ObjectDataConverter.ToData(null, @object, settings, session));
 }
Esempio n. 7
0
        public ObjectData ToData(object @object,
                                 ObjectDataConvertSettings settings = null, ObjectDataConvertSession session = null)
        {
            if (ValueData.CanCreate(@object))
            {
                throw new ArgumentException($"Object can be only converted to {typeof(ValueData)}", nameof(@object));
            }

            return(ToData(this, @object, settings, session));
        }
Esempio n. 8
0
        protected virtual void PopulateObjectMembers(object @object,
                                                     ObjectData data, ObjectDataConvertSettings settings, ObjectDataConvertSession session)
        {
            var type = @object.GetType();

            foreach (var member in data.Members)
            {
                var am    = AssignableMember.Get(type, member.Key, BindingAttributes.Instance);
                var value = Data.ToObject(member.Value, settings, session);
                am.SetValue(@object, value);
            }
        }
Esempio n. 9
0
        public static object ToObject(Data data,
                                      ObjectDataConvertSettings settings = null, ObjectDataConvertSession session = null)
        {
            switch (data)
            {
            case null:
                throw new ArgumentNullException(nameof(data));

            case ValueData valueData:
                return(valueData.Value);

            case ObjectData objectData:
                return(ObjectDataConverter.ToObject(null, objectData, settings, session));

            default:
                throw new NotSupportedException($"Create object for '{data.GetType()}' is not supported.");
            }
        }
Esempio n. 10
0
        internal static object ToObject(ObjectDataConverter converter,
                                        ObjectData data, ObjectDataConvertSettings settings, ObjectDataConvertSession session)
        {
            if (session == null)
            {
                session = new ObjectDataConvertSession();
            }
            if (session.TryGetConvertedObject(data, out var @object))
            {
                return(@object);
            }

            if (settings == null)
            {
                settings = ObjectDataConvertSettings.Default;
            }

            if (converter == null)
            {
                converter = SelectConverter(settings, data.ObjectType);
            }

            @object = CreateObjectByDataConstructor(data);
            if (!ReferenceEquals(@object, null))
            {
                session.AddConverted(@object, data);
                return(@object);
            }

            @object = converter.CreateObject(data, settings, session);
            if (ReferenceEquals(@object, null))
            {
                return(null);
            }

            converter.PopulateObjectMembers(@object, data, settings, session);
            session.AddConverted(@object, data);
            return(@object);
        }
Esempio n. 11
0
 public static IEnumerable <object> ToObjects(IEnumerable <Data> datas,
                                              ObjectDataConvertSettings settings = null, ObjectDataConvertSession session = null)
 {
     return(datas.Select(d => ToObject(d, settings, session)));
 }
Esempio n. 12
0
 public static IEnumerable <Data> ToDatas(IEnumerable <object> objects,
                                          ObjectDataConvertSettings settings = null, ObjectDataConvertSession session = null)
 {
     return(objects.Select(o => ToData(o, settings, session)));
 }
Esempio n. 13
0
 protected virtual object CreateObject(ObjectData data,
                                       ObjectDataConvertSettings settings, ObjectDataConvertSession session)
 {
     return(Activator.CreateInstance(data.ObjectType,
                                     BindingAttributes.DeclareInstance, null, Array.Empty <object>(), CultureInfo.InvariantCulture));
 }