Инициализатор типа выдал исключение для одного из моих модулей?

Module Upgradesupport
Friend RegistryFncs_definst as new registryFncs
Friend AccessApplication_definst As New Access.Application
Friend RDOrdoEngine_definst As New RDO.rdoEngine
Friend DAODBEngine_definst As New DAO.DBEngine    
end module

это весь код для этого модуля. он выдает исключение, когда форма, которая его использует, загружается (то есть, когда вызывается модуль). Я не знаю, что вызывает проблему, но это может быть третья или четвертая строка.


person NickHallick    schedule 12.05.2014    source источник
comment
попробуйте поместить этот блок в Try/Catch, чтобы определить, какая строка не работает   -  person Ňɏssa Pøngjǣrdenlarp    schedule 12.05.2014
comment
Я не могу добавить try/catch в модуль без ошибки (инструкция не может отображаться вне тела метода)   -  person NickHallick    schedule 12.05.2014
comment
акк - моя ошибка! избавиться от NEW для каждого из них и добавить строки для их инициализации в другом месте, возможно, в конструкторе какого-либо связанного класса   -  person Ňɏssa Pøngjǣrdenlarp    schedule 12.05.2014
comment
Извините, я не совсем понимаю ту часть, где я инициализирую их в другом месте, это будет что-то вроде DAODBEngine_definst = ...?   -  person NickHallick    schedule 12.05.2014
comment
да: DAODBEngine_definst = New DAO.DBEngine Трудно посоветовать, где это сделать, возможно, в Sub New каком-то классе, который их использует.   -  person Ňɏssa Pøngjǣrdenlarp    schedule 12.05.2014
comment
я избавился от этой ошибки с вашим советом большое спасибо! теперь еще побороться с базами данных...   -  person NickHallick    schedule 12.05.2014
comment
Я добавлю в качестве ответа, чтобы вы могли принять его и удалить из списка неотвеченных.   -  person Ňɏssa Pøngjǣrdenlarp    schedule 12.05.2014


Ответы (1)


Разделите объявление от создания экземпляра примерно так:

Module Upgradesupport
    Friend RegistryFncs_definst as registryFncs
    Friend AccessApplication_definst As Access.Application
    Friend RDOrdoEngine_definst As RDO.rdoEngine
    Friend DAODBEngine_definst As DAO.DBEngine    
End Module

Удаление New сводит его к объявлению Scope для всей сборки. Затем в каком-то связанном классе, наиболее логично в конструкторе:

 Public Class SomeRelatedClass
    Public Sub New
        ' initialize objects
        RegistryFncs_definst = New registryFncs
        AccessApplication_definst  = New Access.Application
        RDOrdoEngine_definst = New RDO.rdoEngine
        DAODBEngine_definst = New DAO.DBEngine  

        ' other stuff you need
    End Sub  

ЕСЛИ ваше приложение запускается из вспомогательной основной формы, а не из основной формы, вы можете выполнить инициализацию в вспомогательной основной форме:

Public Sub Main
    ' initialize objects
    RegistryFncs_definst = New registryFncs
    AccessApplication_definst  = New Access.Application
    RDOrdoEngine_definst = New RDO.rdoEngine
    DAODBEngine_definst = New DAO.DBEngine
End Sub
person Ňɏssa Pøngjǣrdenlarp    schedule 12.05.2014