Пример #1
0
        /// <summary>
        /// Copies from realm object. Returns new instance of T
        /// </summary>
        /// <returns>The from realm object.</returns>
        /// <param name="realmObject">Realm object.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public static T CopyFromRealmObject <T>(this RealmObject realmObject)
        {
            var standAlone = Activator.CreateInstance(typeof(T));

            foreach (var property in standAlone.GetType().GetRuntimeProperties())
            {
                var realmProperty = realmObject.GetType().GetRuntimeProperty(property.Name);

                if (!realmProperty.CanRead || (realmProperty.GetIndexParameters().Length > 0))
                {
                    continue;
                }

                object val;

                //DateTimeOffset should be DateTime
                if (realmProperty.PropertyType == typeof(DateTimeOffset))
                {
                    val = ((DateTimeOffset)realmProperty.GetValue(realmObject, null)).DateTime;
                }
                else
                {
                    val = realmProperty.GetValue(realmObject, null);
                }
                property.SetValue(standAlone, val, null);
            }

            return((T)standAlone);
        }
Пример #2
0
        private IRealmObjectHelper GetHelper(RealmObject obj)
        {
#if ENABLE_INTERNAL_NON_PCL_TESTS
            return(obj.ObjectMetadata.Helper);
#else
            return(GetHelper(obj.GetType()));
#endif
        }
Пример #3
0
        internal override void SetScheme(RealmObject parameter)
        {
            Contract.Requires(PrimaryKey != null);
            Contract.Requires(SchemeCtor != null);

            SchemeObj = parameter;
            Mapper    = SchemeObj.GetMapper();
            Mapper.Map(parameter, this, parameter.GetType(), typeof(TPoco));

            CopySchemeList();
        }
Пример #4
0
 public static void Resolve(RealmObject element, List <RealmObject> toBeDeleted)
 {
     foreach (var property in element.GetType().GetProperties())
     {
         if (IsEntity(property.PropertyType))
         {
             toBeDeleted.Add((RealmObject)property.GetValue(element));
         }
         if (IsSubEntity(property.PropertyType))
         {
             foreach (var value in property.GetValue(element) as IList)
             {
                 toBeDeleted.Add(value as RealmObject);
             }
         }
     }
 }
Пример #5
0
        private IRealmObjectHelper GetHelper(RealmObject obj)
        {
#if ENABLE_INTERNAL_NON_PCL_TESTS
            return obj.ObjectMetadata.Helper;
#else
            return GetHelper(obj.GetType());
#endif
        }
Пример #6
0
 public static TypeInfo GetInfo(RealmObject obj)
 {
     Argument.NotNull(obj, nameof(obj));
     return(TypeCache.GetOrAdd(obj.GetType(), t => new RealmObjectTypeDelegator(t)));
 }