Option Strict On запрещает позднее связывание в перенесенном коде VB6 - PullRequest
0 голосов
/ 22 октября 2018

Я переместил элемент управления VB6 в Vb.Net, и когда у меня был строгий параметр, я получаю ошибку «Option Strict On запрещает позднее связывание».Ниже я подробно упомянул код VB6 и перенесенный код.

Код VB6: -

Private m_colRows As Collection    'Represents the rows in a table
Private m_lngCurrCol As Long 'Control variable for Col Property
Private m_lngCurrRow As Long 'Control variable for Row Property

Public Property Let CellText(ByVal strText As String)
     m_colRows(m_lngCurrRow)(m_lngCurrCol).Text = strText
End Property
Public Property Get CellText() As String
   CellText = m_colRows(m_lngCurrRow)(m_lngCurrCol).Text
End Property

Ниже приведен код миграции (Vb.Net)

Public Property CellText() As String
    Get
        CellText = m_colRows.Item(m_lngCurrRow)(m_lngCurrCol).Text
    End Get
    Set(ByVal Value As String)
        m_colRows.Item(m_lngCurrRow)(m_lngCurrCol).Text = Value
    End Set
End Property

Параметр «Строгое вкл.» Запрещает позднее связывание, и мне нужна помощь по изменению кода для работы с ним.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Тип VB6 Collection содержит ссылки типа Object.Если вы хотите использовать метод .Text для его членов, вам придется либо изменить ColRows в общую коллекцию (например, List(Of Control()), либо преобразовать содержащиеся в нем ссылки в Control ссылки перед использованием (например,

Public Property CellText() As String
    Get
        CellText = CType(m_colRows.Item(m_lngCurrRow), Control())(m_lngCurrCol).Text
    End Get
    Set(ByVal Value As String)
        CellText = CType(m_colRows.Item(m_lngCurrRow), Control())(m_lngCurrCol).Text = Value
    End Set
End Property

Не видя больше вашего кода, я не могу сказать, какой подход был бы проще и / или дал бы лучшие результаты. Я бы предположил, что использование универсальной коллекции, скорее всего, даст более чистый код, ноТип Collection в стиле VB6 поддерживает некоторые конструкции, которые, как правило, не поддерживаются общими, в том числе возможность изменять коллекцию во время перечисления, что иногда может усложнить перенос.

0 голосов
/ 22 октября 2018

Сообщение верное.Option Strict не разрешает запретить позднюю привязку.

https://docs.microsoft.com/en-us/dotnet/visual-basic/misc/bc30574

Вы можете выбрать позднюю привязку или строгую опцию, но вы не можете использовать обе.

Доступны только следующие варианты:

  • Отключить позднюю привязку
  • Изменить код, чтобы он не использовал позднюю привязку
  • Отключить "строгий параметр"
...