コード例 #1
0
ファイル: FieldBase.cs プロジェクト: cuongdodinh/timok.rbr
        internal void AssignFromString(string fieldString, object record)
        {
            object val = null;

            fieldString = ApplyTrim(fieldString);

            if (mFieldType == strType)
            {
                val = fieldString;
            }
            else
            {
                if (mConvertProvider != null)
                {
                    if (mConvertProvider.CustomNullHandling == false && fieldString.Trim() == String.Empty)
                    {
                        val = GetNullValue();
                    }
                    else
                    {
                        val = mConvertProvider.StringToField(fieldString);

                        if (val == null)
                        {
                            val = GetNullValue();
                        }
                    }
                }
                else
                {
                    // Trim it to use Convert.ChangeType
                    fieldString = fieldString.Trim();

                    if (fieldString == String.Empty)
                    {
                        // Empty stand for null
                        val = GetNullValue();
                    }
                    else
                    {
                        val = Convert.ChangeType(fieldString, mFieldType, null);
                    }
                }
            }

            mFieldInfo.SetValue(record, val);
        }
コード例 #2
0
ファイル: FieldBase.cs プロジェクト: pjeconde/CedFCIC
        internal object AssignFromString(ExtractedInfo fieldString, LineInfo line)
        {
            object val;

            switch (mTrimMode)
            {
            case TrimMode.None:
                break;

            case TrimMode.Both:
                fieldString.TrimBoth(mTrimChars);
                break;

            case TrimMode.Left:
                fieldString.TrimStart(mTrimChars);
                break;

            case TrimMode.Right:
                fieldString.TrimEnd(mTrimChars);
                break;
            }

            try
            {
                if (mConvertProvider == null)
                {
                    if (mIsStringField)
                    {
                        val = fieldString.ExtractedString();
                    }
                    else
                    {
                        // Trim it to use Convert.ChangeType
                        fieldString.TrimBoth(WhitespaceChars);

                        if (fieldString.Length == 0)
                        {
                            // Empty stand for null
                            val = GetNullValue();
                        }
                        else
                        {
                            val = Convert.ChangeType(fieldString.ExtractedString(), mFieldType, null);
                        }
                    }
                }

                else
                {
                    if (mConvertProvider.CustomNullHandling == false &&
                        fieldString.HasOnlyThisChars(WhitespaceChars))
                    {
                        val = GetNullValue();
                    }
                    else
                    {
                        string from = fieldString.ExtractedString();
                        val = mConvertProvider.StringToField(from);

                        if (val == null)
                        {
                            val = GetNullValue();
                        }
                    }
                }

                return(val);
            }
            catch (ConvertException ex)
            {
                throw ConvertException.ReThrowException(ex, mFieldInfo.Name, line.mReader.LineNumber, fieldString.ExtractedFrom + 1);
            }
        }
コード例 #3
0
        internal object AssignFromString(ExtractedInfo fieldString, LineInfo line)
        {
            object val;

            switch (mTrimMode)
            {
            case TrimMode.None:
                break;

            case TrimMode.Both:
                fieldString.TrimBoth(mTrimChars);
                break;

            case TrimMode.Left:
                fieldString.TrimStart(mTrimChars);
                break;

            case TrimMode.Right:
                fieldString.TrimEnd(mTrimChars);
                break;
            }

            try
            {
                if (mConvertProvider == null)
                {
                    if (mIsStringField)
                    {
                        val = fieldString.ExtractedString();
                    }
                    else
                    {
                        // Trim it to use Convert.ChangeType
                        fieldString.TrimBoth(WhitespaceChars);

                        if (fieldString.Length == 0)
                        {
                            // Empty stand for null
                            val = GetNullValue(line);
                        }
                        else
                        {
                            val = Convert.ChangeType(fieldString.ExtractedString(), mFieldTypeInternal, null);
                        }
                    }
                }
                else
                {
                    if (mConvertProvider.CustomNullHandling == false &&
                        fieldString.HasOnlyThisChars(WhitespaceChars))
                    {
                        val = GetNullValue(line);
                    }
                    else
                    {
                        string from = fieldString.ExtractedString();
                        val = mConvertProvider.StringToField(from);

                        if (val == null)
                        {
                            val = GetNullValue(line);
                        }
                    }
                }

                return(val);
            }
            catch (ConvertException ex)
            {
                throw ConvertException.ReThrowException(ex, mFieldInfo.Name, line.mReader.LineNumber, fieldString.ExtractedFrom + 1);
            }
            catch (BadUsageException)
            {
                throw;
            }
            catch (Exception ex)
            {
                if (mConvertProvider == null || mConvertProvider.GetType().Assembly == typeof(FieldBase).Assembly)
                {
                    throw new ConvertException(fieldString.ExtractedString(), mFieldTypeInternal, mFieldInfo.Name, line.mReader.LineNumber, fieldString.ExtractedFrom + 1, ex.Message, ex);
                }
                else
                {
                    throw new ConvertException(fieldString.ExtractedString(), mFieldTypeInternal, mFieldInfo.Name, line.mReader.LineNumber, fieldString.ExtractedFrom + 1, "Your custom converter: " + mConvertProvider.GetType().Name + " throws an " + ex.GetType().Name + " with the message: " + ex.Message, ex);
                }
            }
        }