コード例 #1
0
        internal RealmValue(PrimitiveValue primitive, Realm realm = null, ObjectHandle handle = default, IntPtr propertyIndex = default) : this()
        {
            Type           = primitive.Type;
            _objectHandle  = handle;
            _propertyIndex = propertyIndex;

            switch (Type)
            {
            case RealmValueType.Data:
                _dataValue = primitive.AsBinary();
                break;

            case RealmValueType.String:
                _stringValue = primitive.AsString();
                break;

            case RealmValueType.Object:
                Argument.NotNull(realm, nameof(realm));
                _objectValue = primitive.AsObject(realm);
                break;

            default:
                _primitiveValue = primitive;
                break;
            }
        }
コード例 #2
0
 private static string ConvertRealmValueTypeToFilterAttribute(RealmValueType rvt)
 {
     return(rvt switch
     {
         RealmValueType.Null => "null",
         RealmValueType.Int => "int",
         RealmValueType.Bool => "bool",
         RealmValueType.String => "string",
         RealmValueType.Data => "binary",
         RealmValueType.Date => "date",
         RealmValueType.Float => "float",
         RealmValueType.Double => "double",
         RealmValueType.Decimal128 => "decimal",
         RealmValueType.ObjectId => "objectid",
         RealmValueType.Object => "object",
         RealmValueType.Guid => "uuid",
         _ => throw new NotImplementedException(),
     });
コード例 #3
0
        internal static RealmValue Create <T>(T value, RealmValueType type)
        {
            if (value is null)
            {
                return(new RealmValue(PrimitiveValue.Null()));
            }

            return(type switch
            {
                RealmValueType.String => String(Operator.Convert <T, string>(value)),
                RealmValueType.Data => Data(Operator.Convert <T, byte[]>(value)),
                RealmValueType.Bool => Bool(Operator.Convert <T, bool>(value)),
                RealmValueType.Int => Int(Operator.Convert <T, long>(value)),
                RealmValueType.Float => Float(Operator.Convert <T, float>(value)),
                RealmValueType.Double => Double(Operator.Convert <T, double>(value)),
                RealmValueType.Date => Date(Operator.Convert <T, DateTimeOffset>(value)),
                RealmValueType.Decimal128 => Decimal(Operator.Convert <T, Decimal128>(value)),
                RealmValueType.ObjectId => ObjectId(Operator.Convert <T, ObjectId>(value)),
                RealmValueType.Guid => Guid(Operator.Convert <T, Guid>(value)),
                RealmValueType.Object => Object(Operator.Convert <T, RealmObjectBase>(value)),
                _ => throw new NotSupportedException($"RealmValueType {type} is not supported."),
            });
コード例 #4
0
        internal RealmValue(PrimitiveValue primitive, ObjectHandle handle = default, IntPtr propertyIndex = default) : this()
        {
            Type           = primitive.Type;
            _objectHandle  = handle;
            _propertyIndex = propertyIndex;

            switch (Type)
            {
            case RealmValueType.Data:
                _dataValue = primitive.AsBinary();
                break;

            case RealmValueType.String:
                _stringValue = primitive.AsString();
                break;

            case RealmValueType.Object:
                throw new NotSupportedException("Use RealmValue(RealmObject) instead.");

            default:
                _primitiveValue = primitive;
                break;
            }
        }
コード例 #5
0
 internal RealmValue(RealmObjectBase obj) : this()
 {
     Type         = obj == null ? RealmValueType.Null : RealmValueType.Object;
     _objectValue = obj;
 }
コード例 #6
0
 internal RealmValue(string value) : this()
 {
     Type         = value == null ? RealmValueType.Null : RealmValueType.String;
     _stringValue = value;
 }
コード例 #7
0
 internal RealmValue(byte[] data) : this()
 {
     Type       = data == null ? RealmValueType.Null : RealmValueType.Data;
     _dataValue = data;
 }
コード例 #8
0
 public static extern void realm_value_type_not_equal(QueryHandle queryPtr, SharedRealmHandle realm, IntPtr property_ndx, RealmValueType realm_value_type, out NativeException ex);