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());
            }
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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);
        }
示例#6
0
 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));
 }