コード例 #1
0
        public PropertyOrField(object infoObject, ISterlingPlatformAdapter platformAdapter)
        {
            if (infoObject == null)
            {
                throw new ArgumentNullException("infoObject");
            }

            if (infoObject is PropertyInfo)
            {
                _propertyInfo = (PropertyInfo)infoObject;
            }
            else if (infoObject is FieldInfo)
            {
                _fieldInfo = (FieldInfo)infoObject;
            }
            else
            {
                throw new ArgumentException(string.Format("Invalid type: {0}", infoObject.GetType()), "infoObject");
            }

            _platformAdapter = platformAdapter;
        }
コード例 #2
0
        public PropertyOrField(object infoObject, ISterlingPlatformAdapter platformAdapter)
        {
            if (infoObject == null)
            {
                throw new ArgumentNullException("infoObject");
            }

            if (infoObject is PropertyInfo)
            {
                _propertyInfo = (PropertyInfo)infoObject;
            }
            else if (infoObject is FieldInfo)
            {
                _fieldInfo = (FieldInfo)infoObject;
            }
            else
            {
                throw new ArgumentException(string.Format("Invalid type: {0}", infoObject.GetType()), "infoObject");
            }

            _platformAdapter = platformAdapter;
        }
コード例 #3
0
ファイル: Extensions.cs プロジェクト: kouweizhong/SterlingDB
 /// <summary>
 ///     Is a property ignored?
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 public static bool IsIgnored(this Type type, Type ignoreAttribute, ISterlingPlatformAdapter platformAdapter)
 {
     return(platformAdapter.GetCustomAttributes(type, ignoreAttribute, false).Any());
 }
コード例 #4
0
        /// <summary>
        ///     Default constructor
        /// </summary>
        public ExtendedSerializer(ISterlingPlatformAdapter platformAdapter)
        {
            // wire up the serialization pairs
            _serializers.Add(typeof(DateTime), new Tuple <Action <BinaryWriter, object>, Func <BinaryReader, object> >(
                                 (bw, obj) =>
            {
                bw.Write(((DateTime)obj).Ticks);
                bw.Write((int)((DateTime)obj).Kind);
            },
                                 br =>
            {
                return(new DateTime(br.ReadInt64(), (DateTimeKind)br.ReadInt32()));
            }));


            _serializers.Add(typeof(Guid), new Tuple <Action <BinaryWriter, object>, Func <BinaryReader, object> >(
                                 (bw, obj) => bw.Write(((Guid)obj).ToByteArray()),
                                 br => new Guid(br.ReadBytes(16))));

            _serializers.Add(typeof(Uri), new Tuple <Action <BinaryWriter, object>, Func <BinaryReader, object> >(
                                 (bw, obj) => bw.Write(((Uri)obj).AbsoluteUri),
                                 br => new Uri(br.ReadString())));

            _serializers.Add(typeof(decimal), new Tuple <Action <BinaryWriter, object>, Func <BinaryReader, object> >(
                                 (bw, obj) =>
            {
                var bits = decimal.GetBits((decimal)obj);
                bw.Write(bits[0]);
                bw.Write(bits[1]);
                bw.Write(bits[2]);
                bw.Write(bits[3]);
            },
                                 br =>
            {
                var bits = new int[4];
                bits[0]  = br.ReadInt32();
                bits[1]  = br.ReadInt32();
                bits[2]  = br.ReadInt32();
                bits[3]  = br.ReadInt32();
                return(new decimal(bits));
            })
                             );

            _serializers.Add(typeof(TimeSpan), new Tuple <Action <BinaryWriter, object>, Func <BinaryReader, object> >(
                                 (bw, obj) => bw.Write(((TimeSpan)obj).Ticks),
                                 br => new TimeSpan(br.ReadInt64())));

            _serializers.Add(typeof(DateTimeOffset),
                             new Tuple <Action <BinaryWriter, object>, Func <BinaryReader, object> >(
                                 (bw, obj) =>
            {
                var dto = (DateTimeOffset)obj;
                bw.Write(dto.Ticks);
                bw.Write(dto.Offset.Ticks);
            },
                                 br => new DateTimeOffset(br.ReadInt64(), new TimeSpan(br.ReadInt64()))));

            var bitmapSerializer = platformAdapter.GetBitmapSerializer();

            if (bitmapSerializer != null)
            {
                _serializers.Add(bitmapSerializer.Item1, Tuple.Create(bitmapSerializer.Item2, bitmapSerializer.Item3));
            }
        }
コード例 #5
0
 public AggregateSerializer(ISterlingPlatformAdapter platformAdapter)
 {
     _platformAdapter = platformAdapter;
 }
コード例 #6
0
 public AggregateSerializer( ISterlingPlatformAdapter platformAdapter )
 {
     _platformAdapter = platformAdapter;
 }
コード例 #7
0
        /// <summary>
        ///     Default constructor
        /// </summary>
        public ExtendedSerializer( ISterlingPlatformAdapter platformAdapter )
        {
            // wire up the serialization pairs 
            _serializers.Add( typeof( DateTime ), new Tuple<Action<BinaryWriter, object>, Func<BinaryReader, object>>(
                                                    ( bw, obj ) =>
                                                        {
                                                            bw.Write( ( (DateTime) obj ).Ticks );
                                                            bw.Write( (int) ( (DateTime) obj ).Kind );
                                                        },
                                                    br =>
                                                        {
                                                            return new DateTime(br.ReadInt64(), (DateTimeKind) br.ReadInt32() );
                                                        } ) );


            _serializers.Add( typeof( Guid ), new Tuple<Action<BinaryWriter, object>, Func<BinaryReader, object>>(
                                                ( bw, obj ) => bw.Write( ( (Guid) obj ).ToByteArray() ),
                                                br => new Guid( br.ReadBytes( 16 ) ) ) );

            _serializers.Add( typeof( Uri ), new Tuple<Action<BinaryWriter, object>, Func<BinaryReader, object>>(
                                               ( bw, obj ) => bw.Write( ( (Uri) obj ).AbsoluteUri ),
                                               br => new Uri( br.ReadString() ) ) );

            _serializers.Add( typeof( decimal ), new Tuple<Action<BinaryWriter, object>, Func<BinaryReader, object>>(
                                                   ( bw, obj ) =>
                                                   {
                                                       var bits = decimal.GetBits( (decimal) obj );
                                                       bw.Write( bits[ 0 ] );
                                                       bw.Write( bits[ 1 ] );
                                                       bw.Write( bits[ 2 ] );
                                                       bw.Write( bits[ 3 ] );
                                                   },
                                                   br =>
                                                   {
                                                       var bits = new int[ 4 ];
                                                       bits[ 0 ] = br.ReadInt32();
                                                       bits[ 1 ] = br.ReadInt32();
                                                       bits[ 2 ] = br.ReadInt32();
                                                       bits[ 3 ] = br.ReadInt32();
                                                       return new decimal( bits );
                                                   } )
                );

            _serializers.Add( typeof( TimeSpan ), new Tuple<Action<BinaryWriter, object>, Func<BinaryReader, object>>(
                                                    ( bw, obj ) => bw.Write( ( (TimeSpan) obj ).Ticks ),
                                                    br => new TimeSpan( br.ReadInt64() ) ) );

            _serializers.Add( typeof( DateTimeOffset ),
                             new Tuple<Action<BinaryWriter, object>, Func<BinaryReader, object>>(
                                 ( bw, obj ) =>
                                 {
                                     var dto = (DateTimeOffset) obj;
                                     bw.Write( dto.Ticks );
                                     bw.Write( dto.Offset.Ticks );
                                 },
                                 br => new DateTimeOffset( br.ReadInt64(), new TimeSpan( br.ReadInt64() ) ) ) );

            var bitmapSerializer = platformAdapter.GetBitmapSerializer();

            if ( bitmapSerializer != null )
            {
                _serializers.Add( bitmapSerializer.Item1, Tuple.Create( bitmapSerializer.Item2, bitmapSerializer.Item3 ) );
            }
        }
コード例 #8
0
 /// <summary>
 ///     Constructor takes in the database
 /// </summary>
 public SterlingEngine(ISterlingPlatformAdapter platform)
 {
     PlatformAdapter = platform;
     _database       = new Lazy <SterlingDatabase>(() => new SterlingDatabase(this));
 }
コード例 #9
0
ファイル: SterlingEngine.cs プロジェクト: blinds52/SterlingDB
 /// <summary>
 ///     Constructor takes in the database 
 /// </summary>
 public SterlingEngine( ISterlingPlatformAdapter platform )
 {
     this.PlatformAdapter = platform;
     _database = new Lazy<SterlingDatabase>( () => new SterlingDatabase( this ) );
 }