internal void ValidateTypes(FieldInfo fi) { bool valid = false; Type fieldType = fi.FieldType; if (fieldType.IsValueType && fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(Nullable <>)) { fieldType = fieldType.GetGenericArguments()[0]; } switch (Kind) { case ConverterKind.None: valid = true; break; case ConverterKind.Date: case ConverterKind.DateMultiFormat: valid = typeof(DateTime) == fieldType; break; case ConverterKind.Byte: case ConverterKind.SByte: case ConverterKind.Int16: case ConverterKind.Int32: case ConverterKind.Int64: case ConverterKind.UInt16: case ConverterKind.UInt32: case ConverterKind.UInt64: case ConverterKind.Decimal: case ConverterKind.Double: case ConverterKind.Single: case ConverterKind.Boolean: case ConverterKind.Char: case ConverterKind.Guid: valid = Kind.ToString() == fieldType.UnderlyingSystemType.Name; break; case ConverterKind.PercentDouble: valid = typeof(double) == fieldType; break; } if (valid == false) { throw new BadUsageException( "The converter of the field: '" + fi.Name + "' is wrong. The field is of Type: " + fieldType.Name + " and the converter is for type: " + Kind.ToString()); } }
private FieldConverterAttribute(ConverterKind converter, params string[] args) { Type convType; switch (converter) { case ConverterKind.Date: convType = typeof(ConvertHelpers.DateTimeConverter); break; case ConverterKind.Byte: convType = typeof(ConvertHelpers.SByteConverter); break; case ConverterKind.Int16: convType = typeof(ConvertHelpers.Int16Converter); break; case ConverterKind.Int32: convType = typeof(ConvertHelpers.Int32Converter); break; case ConverterKind.Int64: convType = typeof(ConvertHelpers.Int64Converter); break; case ConverterKind.Decimal: convType = typeof(ConvertHelpers.DecimalConverter); break; case ConverterKind.Double: convType = typeof(ConvertHelpers.DoubleConverter); break; case ConverterKind.Single: convType = typeof(ConvertHelpers.SingleConverter); break; case ConverterKind.Boolean: convType = typeof(ConvertHelpers.BooleanConverter); break; default: throw new BadUsageException("Converter '" + converter.ToString() + "' not found, you must specify a valid converter."); } //mType = type; CreateConverter(convType, args); }
/// <summary> /// Create the converter in source code /// </summary> /// <param name="lang">C# or Visual Basic</param> /// <returns>Converter attribute in appropriate language</returns> internal string GetConverterCode(NetLanguage lang) { StringBuilder sb = new StringBuilder(); if (mKind != ConverterKind.None) { sb.Append("FieldConverter(ConverterKind." + mKind.ToString()); } else if (mTypeName != string.Empty) { if (lang == NetLanguage.CSharp) { sb.Append("FieldConverter(typeof(" + mTypeName + ")"); } else if (lang == NetLanguage.VbNet) { sb.Append("FieldConverter(GetType(" + mTypeName + ")"); } } else { return(string.Empty); } if (mArg1 != null && mArg1 != string.Empty) { sb.Append(", \"" + mArg1 + "\""); if (mArg2 != null && mArg2 != string.Empty) { sb.Append(", \"" + mArg2 + "\""); if (mArg3 != null && mArg3 != string.Empty) { sb.Append(", \"" + mArg3 + "\""); } } } sb.Append(")"); return(sb.ToString()); }
/// <summary> /// Indicates the <see cref="ConverterKind"/> used for read/write operations. /// </summary> /// <param name="converter">The <see cref="ConverterKind"/> used for the transformations.</param> /// <param name="args">An array of parameters passed directly to the Converter</param> private FieldConverterAttribute(ConverterKind converter, params string[] args) { Kind = converter; Type convType; switch (converter) { case ConverterKind.Date: convType = typeof (ConvertHelpers.DateTimeConverter); break; case ConverterKind.DateMultiFormat: convType = typeof (ConvertHelpers.DateTimeMultiFormatConverter); break; case ConverterKind.Byte: convType = typeof (ConvertHelpers.ByteConverter); break; case ConverterKind.SByte: convType = typeof (ConvertHelpers.SByteConverter); break; case ConverterKind.Int16: convType = typeof (ConvertHelpers.Int16Converter); break; case ConverterKind.Int32: convType = typeof (ConvertHelpers.Int32Converter); break; case ConverterKind.Int64: convType = typeof (ConvertHelpers.Int64Converter); break; case ConverterKind.UInt16: convType = typeof (ConvertHelpers.UInt16Converter); break; case ConverterKind.UInt32: convType = typeof (ConvertHelpers.UInt32Converter); break; case ConverterKind.UInt64: convType = typeof (ConvertHelpers.UInt64Converter); break; case ConverterKind.Decimal: convType = typeof (ConvertHelpers.DecimalConverter); break; case ConverterKind.Double: convType = typeof (ConvertHelpers.DoubleConverter); break; // Added by Shreyas Narasimhan 17 March 2010 case ConverterKind.PercentDouble: convType = typeof (ConvertHelpers.PercentDoubleConverter); break; case ConverterKind.Single: convType = typeof (ConvertHelpers.SingleConverter); break; case ConverterKind.Boolean: convType = typeof (ConvertHelpers.BooleanConverter); break; // Added by Alexander Obolonkov 2007.11.08 case ConverterKind.Char: convType = typeof (ConvertHelpers.CharConverter); break; // Added by Alexander Obolonkov 2007.11.08 case ConverterKind.Guid: convType = typeof (ConvertHelpers.GuidConverter); break; default: throw new BadUsageException("Converter '" + converter.ToString() + "' not found, you must specify a valid converter."); } //mType = type; CreateConverter(convType, args); }
/// <summary> /// Indicates the <see cref="ConverterKind"/> used for read/write operations. /// </summary> /// <param name="converter">The <see cref="ConverterKind"/> used for the transformations.</param> /// <param name="args">An array of parameters passed directly to the Converter</param> private FieldConverterAttribute(ConverterKind converter, params string[] args) { Kind = converter; Type convType; switch (converter) { case ConverterKind.Date: convType = typeof(ConvertHelpers.DateTimeConverter); break; case ConverterKind.DateMultiFormat: convType = typeof(ConvertHelpers.DateTimeMultiFormatConverter); break; case ConverterKind.Byte: convType = typeof(ConvertHelpers.ByteConverter); break; case ConverterKind.SByte: convType = typeof(ConvertHelpers.SByteConverter); break; case ConverterKind.Int16: convType = typeof(ConvertHelpers.Int16Converter); break; case ConverterKind.Int32: convType = typeof(ConvertHelpers.Int32Converter); break; case ConverterKind.Int64: convType = typeof(ConvertHelpers.Int64Converter); break; case ConverterKind.UInt16: convType = typeof(ConvertHelpers.UInt16Converter); break; case ConverterKind.UInt32: convType = typeof(ConvertHelpers.UInt32Converter); break; case ConverterKind.UInt64: convType = typeof(ConvertHelpers.UInt64Converter); break; case ConverterKind.Decimal: convType = typeof(ConvertHelpers.DecimalConverter); break; case ConverterKind.Double: convType = typeof(ConvertHelpers.DoubleConverter); break; // Added by Shreyas Narasimhan 17 March 2010 case ConverterKind.PercentDouble: convType = typeof(ConvertHelpers.PercentDoubleConverter); break; case ConverterKind.Single: convType = typeof(ConvertHelpers.SingleConverter); break; case ConverterKind.Boolean: convType = typeof(ConvertHelpers.BooleanConverter); break; // Added by Alexander Obolonkov 2007.11.08 case ConverterKind.Char: convType = typeof(ConvertHelpers.CharConverter); break; // Added by Alexander Obolonkov 2007.11.08 case ConverterKind.Guid: convType = typeof(ConvertHelpers.GuidConverter); break; default: throw new BadUsageException("Converter '" + converter.ToString() + "' not found, you must specify a valid converter."); } //mType = type; CreateConverter(convType, args); }
public string GetName() { return(ConverterKind.ToString() + Signature.GetName()); }
private FieldConverterAttribute(ConverterKind converter, params string[] args) { Kind = converter; Type convType; switch (converter) { case ConverterKind.Date: convType = typeof (ConvertHelpers.DateTimeConverter); break; case ConverterKind.Byte: convType = typeof (ConvertHelpers.ByteConverter); break; case ConverterKind.SByte: convType = typeof (ConvertHelpers.SByteConverter); break; case ConverterKind.Int16: convType = typeof (ConvertHelpers.Int16Converter); break; case ConverterKind.Int32: convType = typeof (ConvertHelpers.Int32Converter); break; case ConverterKind.Int64: convType = typeof (ConvertHelpers.Int64Converter); break; case ConverterKind.UInt16: convType = typeof (ConvertHelpers.UInt16Converter); break; case ConverterKind.UInt32: convType = typeof (ConvertHelpers.UInt32Converter); break; case ConverterKind.UInt64: convType = typeof (ConvertHelpers.UInt64Converter); break; case ConverterKind.Decimal: convType = typeof (ConvertHelpers.DecimalConverter); break; case ConverterKind.Double: convType = typeof (ConvertHelpers.DoubleConverter); break; case ConverterKind.Single: convType = typeof (ConvertHelpers.SingleConverter); break; case ConverterKind.Boolean: convType = typeof (ConvertHelpers.BooleanConverter); break; default: throw new BadUsageException("Converter '" + converter.ToString() + "' not found, you must specify a valid converter."); } //mType = type; CreateConverter(convType, args); }
public string GetName(NameMangler nameMangler) { return(ConverterKind.ToString() + Signature.GetMangledName(nameMangler)); }