1) В случае такой конструкции (урезана):
- Код: Выделить всё
Structure MenuClass
Dim ObjUGTS as Single
Public MenuTab as Collections.Generic.IList(Of MenuTabClass)
Structure MenuTabClass
Public MenuSection as Collections.Generic.IList(Of MenuSectionClass)
Structure MenuSectionClass
Public MenuItem as Collections.Generic.IList(Of MenuItemClass)
Structure MenuItemClass
Public Sub Show
'Получить доступ к ObjUGTS
End Sub
End Structure
End Structure
End Structure
End Structure
Как можно из подпрограммы Show получить доступ к ObjUGTS? Эта переменная должна задаваться в объекте типа MenuClass и распространяться на все дочерние объектные переменные (MenuTab, MenuSection и т.д.). Shared, если я правильно понимаю, тут не подходит, так как в таком случае эта переменная будет общая на все объекты типа MenuClass. Единственное, что приходит в голову - заменить структуры на классы, и использовать Inherits, но я относительно недавно перешел на .Net и еще не все понимаю.
И да, оптимальна ли такая конструкция вложенных друг в друга типов? Или лучше сделать их отдельно? У меня она инициализируется эдаким фрактальным образом - при создании MenuClass создаются MenuTabClass и добавляются в ее коллекцию, при создании каждой из которых создаются MenuSectionClass и добавляются в их коллекции, и так далее.
2) На 64-битной ОС на одном проекте появляются какие-то странности при отладке - в случае какой-либо ошибки, VB лишь заявляет, "No symbols are loaded" и предлагает лишь показать дизассемблированный код, не указывая строку, в которой произошла ошибка. В Advanced Compilation Options платформа указана х86, Debug Info pdb-only, отключено Enable Optimizations, в опциях VB включено Enable Just My Code, включено Suppress JIT optimization on module load, включены все JIT опции... Я даже уже не знаю, что еще может на это влиять.
3) Правильно ли я сделал, выделив практически все публичные объявления в отдельный модуль? Правда, там уже накопилось около 800 строк, не считая пустые...