Класс помечен для Deliminted, но ошибка говорит, что нет - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть сомнительная задача обновить старое приложение vb, использующее файловые помощники, но по какой-то причине оно игнорирует тот факт, что я пометил его как запись с разделителями.

В форме он использует следующее, чтобы присоединить файл csv к записи, которая аналогична тому, как это делает c #.

Private Sub browseButton_Click(sender As System.Object, e As System.EventArgs) _
    Handles browseButton.Click

    Try
        Dim file = GetFile()
        '' Errors
        Dim errors As New Dictionary(Of Integer, String)

        If IO.File.Exists(file) Then
            Dim engine As New FileHelperEngine(Of AveryOrderCsv)
            _records = CType(engine.ReadFile(file), AveryOrderCsv()).ToList()

            Dim count As Integer = 0
            Dim success As Integer = 0

            For Each averyOrderCsv As AveryOrderCsv In _records
                Try
                    ImportProgressBar.Value = count
                    ImportProgressLabel.Text = String.Format("Importing {0} of {1} dockets",
                        count + 1, _records.Count())
                    System.Windows.Forms.Application.DoEvents()

                    If CreateSop(averyOrderCsv) Then
                        success = success + 1
                    End If
                Catch ex As Exception
                    errors.Add(count, ex.Message)
                End Try
                count = count + 1
            Next
        End If
    Catch ex As Exception
        ExceptionManager.HandleUnexpectedException(ex)
    End Try

Класс

Imports AveryIntegration.Common.CSV
Imports FileHelpers
Imports System
Imports System.Diagnostics

Namespace AveryIntegration.Common.CSV.Records
    <DelimitedRecord(",")>
    Public Class AveryOrderCsv
        <FieldConverter(GetType(CustomStringConvertor))>
        <FieldQuoted>
        Public String2 As String

        <FieldConverter(GetType(CustomStringConvertor))>
        <FieldQuoted>
        Public String3 As String

        <FieldConverter(GetType(CustomStringConvertor))>
        <FieldQuoted>
        Public String4 As String

        <FieldConverter(GetType(CustomStringConvertor))>
        <FieldQuoted>
        Public String5 As String

        <FieldConverter(GetType(CustomStringConvertor))>
        <FieldQuoted>
        Public String10 As String

        <FieldConverter(GetType(CustomStringConvertor))>
        <FieldQuoted>
        Public String15 As String

        Public Decimal1 As Decimal

        Public Decimal5 As Decimal

        Public Decimal8 As Decimal

        Public Decimal9 As Decimal

        Public Decimal10 As Decimal

        Public Date1 As DateTime

        Public Ticket2 As Integer

        <DebuggerNonUserCode>
        Public Sub New()
            MyBase.New()
        End Sub
    End Class
End Namespace

Ошибка, которую я получаю, заключается в следующем, но, как вы видите выше, я объявил ее как запись с разделителями и импортировал FileHelpers для импорта

enter image description here

1 Ответ

1 голос
/ 11 апреля 2019

В VB атрибут должен находиться в одной логической строке.

<DelimitedRecord(",")> Public Class AveryOrderCsv

или

<DelimitedRecord(",")> _
Public Class AveryOrderCsv

То же самое для свойств.

Артикул Применение атрибутов говорит:

В Visual Basic атрибут заключен в угловые скобки и должен находиться в одной логической строке;символ продолжения строки можно использовать, если требуется разрыв строки.

...