public SqlSingleAccessor(TypeAccessor accessor, ParameterExpression expression, MemberExpression expr) : base(accessor, expression, expr) { }
public NullableDateTimeOffsetAccessor(TypeAccessor accessor, ParameterExpression expression, MemberExpression expr) : base(accessor, expression, expr) { }
public NullableTimeSpanAccessor(TypeAccessor accessor, ParameterExpression expression, MemberExpression expr) : base(accessor, expression, expr) { }
public GuidAccessor(TypeAccessor accessor, ParameterExpression expression, MemberExpression expr) : base(accessor, expression, expr) { }
public NullableDecimalAccessor(TypeAccessor accessor, ParameterExpression expression, MemberExpression expr) : base(accessor, expression, expr) { }
static public MemberAccessor GetMemberAccessor(TypeAccessor typeAccessor, string memberName) { var par = Expression.Parameter(typeof(object), "obj"); var expr = Expression.PropertyOrField(Expression.Convert(par, typeAccessor.Type), memberName); var type = expr.Type; var underlyingType = type; var isNullable = false; if (underlyingType.IsGenericType && underlyingType.GetGenericTypeDefinition() == typeof(Nullable <>)) { underlyingType = underlyingType.GetGenericArguments()[0]; isNullable = true; } if (underlyingType.IsEnum) { underlyingType = Enum.GetUnderlyingType(underlyingType); } if (isNullable) { switch (Type.GetTypeCode(underlyingType)) { case TypeCode.Boolean: return(new NullableBooleanAccessor(typeAccessor, par, expr)); case TypeCode.Char: return(new NullableCharAccessor(typeAccessor, par, expr)); case TypeCode.SByte: return(new NullableSByteAccessor(typeAccessor, par, expr)); case TypeCode.Byte: return(new NullableByteAccessor(typeAccessor, par, expr)); case TypeCode.Int16: return(new NullableInt16Accessor(typeAccessor, par, expr)); case TypeCode.UInt16: return(new NullableUInt16Accessor(typeAccessor, par, expr)); case TypeCode.Int32: return(new NullableInt32Accessor(typeAccessor, par, expr)); case TypeCode.UInt32: return(new NullableUInt32Accessor(typeAccessor, par, expr)); case TypeCode.Int64: return(new NullableInt64Accessor(typeAccessor, par, expr)); case TypeCode.UInt64: return(new NullableUInt64Accessor(typeAccessor, par, expr)); case TypeCode.Single: return(new NullableSingleAccessor(typeAccessor, par, expr)); case TypeCode.Double: return(new NullableDoubleAccessor(typeAccessor, par, expr)); case TypeCode.Decimal: return(new NullableDecimalAccessor(typeAccessor, par, expr)); case TypeCode.DateTime: return(new NullableDateTimeAccessor(typeAccessor, par, expr)); case TypeCode.Object: if (type == typeof(Guid)) { return(new NullableGuidAccessor(typeAccessor, par, expr)); } if (type == typeof(DateTimeOffset)) { return(new NullableDateTimeOffsetAccessor(typeAccessor, par, expr)); } if (type == typeof(TimeSpan)) { return(new NullableTimeSpanAccessor(typeAccessor, par, expr)); } break; default: break; } } else { switch (Type.GetTypeCode(underlyingType)) { case TypeCode.Boolean: return(new BooleanAccessor(typeAccessor, par, expr)); case TypeCode.Char: return(new CharAccessor(typeAccessor, par, expr)); case TypeCode.SByte: return(new SByteAccessor(typeAccessor, par, expr)); case TypeCode.Byte: return(new ByteAccessor(typeAccessor, par, expr)); case TypeCode.Int16: return(new Int16Accessor(typeAccessor, par, expr)); case TypeCode.UInt16: return(new UInt16Accessor(typeAccessor, par, expr)); case TypeCode.Int32: return(new Int32Accessor(typeAccessor, par, expr)); case TypeCode.UInt32: return(new UInt32Accessor(typeAccessor, par, expr)); case TypeCode.Int64: return(new Int64Accessor(typeAccessor, par, expr)); case TypeCode.UInt64: return(new UInt64Accessor(typeAccessor, par, expr)); case TypeCode.Single: return(new SingleAccessor(typeAccessor, par, expr)); case TypeCode.Double: return(new DoubleAccessor(typeAccessor, par, expr)); case TypeCode.Decimal: return(new DecimalAccessor(typeAccessor, par, expr)); case TypeCode.DateTime: return(new DateTimeAccessor(typeAccessor, par, expr)); case TypeCode.Object: if (type == typeof(Guid)) { return(new GuidAccessor(typeAccessor, par, expr)); } if (type == typeof(DateTimeOffset)) { return(new DateTimeOffsetAccessor(typeAccessor, par, expr)); } if (type == typeof(TimeSpan)) { return(new TimeSpanAccessor(typeAccessor, par, expr)); } break; default: break; } } #if !SILVERLIGHT if (type == typeof(SqlByte)) { return(new SqlByteAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlInt16)) { return(new SqlInt16Accessor(typeAccessor, par, expr)); } if (type == typeof(SqlInt32)) { return(new SqlInt32Accessor(typeAccessor, par, expr)); } if (type == typeof(SqlInt64)) { return(new SqlInt64Accessor(typeAccessor, par, expr)); } if (type == typeof(SqlSingle)) { return(new SqlSingleAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlBoolean)) { return(new SqlBooleanAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlDouble)) { return(new SqlDoubleAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlDateTime)) { return(new SqlDateTimeAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlDecimal)) { return(new SqlDecimalAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlMoney)) { return(new SqlMoneyAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlString)) { return(new SqlStringAccessor(typeAccessor, par, expr)); } if (type == typeof(SqlGuid)) { return(new SqlGuidAccessor(typeAccessor, par, expr)); } #endif return((MemberAccessor)Activator.CreateInstance( typeof(BaseAccessor <>).MakeGenericType(type), new object[] { typeAccessor, par, expr })); }
public NullableAccessor(TypeAccessor typeAccessor, ParameterExpression par, MemberExpression member) : base(typeAccessor, par, member) { }
protected ExprMemberAccessor(TypeAccessor typeAccessor, MemberInfo memberInfo) : base(typeAccessor, memberInfo) { }
public static T CreateInstanceEx <T>(InitContext context) { return(TypeAccessor <T> .CreateInstance(context)); }
public static T CreateInstanceEx <T>() { return(TypeAccessor <T> .CreateInstanceEx()); }