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; }
/// <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()); }
/// <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)); } }
public AggregateSerializer(ISterlingPlatformAdapter platformAdapter) { _platformAdapter = platformAdapter; }
public AggregateSerializer( ISterlingPlatformAdapter platformAdapter ) { _platformAdapter = platformAdapter; }
/// <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 ) ); } }
/// <summary> /// Constructor takes in the database /// </summary> public SterlingEngine(ISterlingPlatformAdapter platform) { PlatformAdapter = platform; _database = new Lazy <SterlingDatabase>(() => new SterlingDatabase(this)); }
/// <summary> /// Constructor takes in the database /// </summary> public SterlingEngine( ISterlingPlatformAdapter platform ) { this.PlatformAdapter = platform; _database = new Lazy<SterlingDatabase>( () => new SterlingDatabase( this ) ); }