Nano Hash - криптовалюты, майнинг, программирование

Вызов класса из другого файла ASP.NET VB.NET

Допустим, у меня есть такой класс в class1.vb:

Public Class my_class
  Public Sub my_sub()
   Dim myvar as String
   myvar = 10
   Session("myvar") = myvar
  End Sub
End Class

Затем у меня есть страница ASP.NET с файлом кода программной части, default.aspx и default.aspx.vb, и я хочу вызвать my_class. Я делаю следующее, но это не работает:

Imports my_app.my_class
Partial Public Class _default
   Inherits System.Web.UI.Page
 Protected Sub Page_Load(ByVal sender as Object, ByVal e as System.EventArgs) Handles Me.Load
   my_class()
 End Sub
End Class

Я получаю сообщение "Ссылка на необщий член требует ссылки на объект"

22.04.2010

Ответы:


1

Попробуйте импортировать пространство имен, содержащее класс, а не сам класс.

Итак, вместо этого:

Imports my_app.my_class

сделай это:

Imports my_app

VB.NET импортирует пространства имен в область файла, чтобы помочь компилятору разрешить имена типов, которые не являются полностью определенными. Это означает, что вы можете свободно использовать все типы, объявленные в пространстве имен my_app, в этом файле кода без префикса имени типа с префиксом my_app.

Хорошо, как только вы это сделаете, вам нужно будет переключить содержимое Page_Load, чтобы создать экземпляр my_class следующим образом:

Dim foo As New my_class
my_class.my_sub()

Теперь у вас есть экземпляр my_class с именем foo, и вы можете вызывать для него методы экземпляра.

Другая вещь, которую вы можете сделать, это сделать my_sub методом Shared, чтобы вам не нужно было создавать экземпляр:

Public Shared Sub my_sub()

Если вы сделаете это, вам не нужно создавать экземпляр my_class для вызова my_sub — вы можете напрямую вызывать my_sub:

my_class.my_sub()
22.04.2010
  • Это избавляет от ссылки на ошибку неразделяемого члена, но заменяет ее на: «GetUserInfo» не объявлен. Он может быть недоступен из-за его уровня защиты. 22.04.2010
  • Я думаю, вам, возможно, придется опубликовать еще немного кода - я не вижу, чтобы этот метод был объявлен где-либо в вашем исходном сообщении. 22.04.2010
  • Упс. Извини. Та же ошибка, просто удалите «GetUserInfo» и замените на «my_sub» 22.04.2010
  • О, хорошо, не беспокойтесь! Я обновил свой ответ, чтобы показать, что еще должно произойти. 22.04.2010
  • Спасибо, Эндрю. Я хотел бы поставить два ответа с зеленой галочкой... но я дал это Дереку, т.к. я получил его ответ первым. Спасибо еще раз! 22.04.2010

  • 2

    Вы имеете в виду, что хотите вызвать my_sub() для my_class? Вы можете пометить его как общий метод, чтобы его можно было вызывать как my_class.my_sub()

    or

    создать его экземпляр:

    Dim myclass as new my_class()
    myclass.my_sub()
    
    22.04.2010
  • Смотрите ответ Дерека ниже и мои комментарии - выдает ошибку. 22.04.2010

  • 3
  • Ваш новый код похож на приведенный выше (недавно отредактированный) код? 22.04.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..