Доступ к классу, который НЕ объявлен в App_Code в ASP.NET

Я иногда определяю классы Business Logic для "помощи" моих классов кода ASPX. Для меня наиболее разумно включить их в файл с кодом, поскольку они работают вместе. Тем не менее, мне иногда хотелось получить доступ к классам Business Logic из классов более высокого уровня, определенных в App_Code, но они не доступны автоматически вне файла.

Таким образом, вопрос: легко получить доступ к классам, определенным в App_Code, но как мне получить доступ к классам, определенным в другом месте?

UPDATE: Еще одна вещь: класс страницы ASPX и класс App_Code находятся в одном пространстве имен - это не проблема.

ПРИМЕЧАНИЕ. Я принял совет тех, кто ответил (спасибо ребятам), и рефакторинг, чтобы облегчить доступ к классам. Тем не менее, я не думаю, что на этот вопрос пока еще дан ответ (в случае проекта ASP.NET Website). Мне больше не нужен ответ, но если кто-то может прояснить, что делает классы видимыми, когда они находятся вне App_Code, это может помочь кому-то другому (или даже мне, по дороге).

Ответ 1

Я предполагаю, что вы имеете в виду, что вы определяете отдельный класс внутри файла codecs.cs. Какие модификаторы доступа вы им даете?

Как и выше, у меня обычно был отдельный проект в решении для такого рода вещей (обычно в другом пространстве имен, например MyApp.Web и MyApp.), и просто ссылаюсь на него оттуда.

Ответ 2

Убедитесь, что вы размещаете свои классы в разумном пространстве имен.

Поместите ключевое слово 'using' в код за файлами, к которым вы хотели бы получить доступ.

Или <% @import, если вы используете их во встроенном коде.

Поместите dll, содержащую ваши классы в папку /bin.

TBH Я предпочитаю сохранить отдельный проект библиотеки в том же решении и иметь ссылку на проект в веб-проекте. VS обрабатывает создание и размещение DLL для вас.

Ответ 3

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

Пожалуйста, следуйте процедуре, как решить эту проблему.

1) Щелкните правой кнопкой мыши файл вашего класса в папке App_Code. 2) Нажмите на свойства. 3) Измените действие сборки с "" на компиляцию 4) Восстановите свое приложение.

Это будет работать определенно

Тушар Тяги

Ответ 4

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

  • Убедитесь, что вы не называете папку каким-либо из зарезервированных терминов (например, называете ее "AppCode", а не "App_Code" ), если вы столкнулись с проблемами в папке "App_Code", после прохождения остальной части этих пули.
  • У всех классов должно быть такое же пространство имен, что и ваш код.
  • Убедитесь, что классы становятся общедоступными, с общедоступными методами, если они вызываются из других классов.
  • Включить "использование MyClass;" в верхней части файлов кода/класса.
  • Убедитесь, что для свойства класса Class Action установлено значение Скомпилировать.

Ответ 5

Вы не можете получить доступ к классу из другого класса в том же коде за файлом, что и .net dsnt поддерживают множественное наследование. но вы можете создать свой бизнес-логический класс как внутренний класс в основном классе и сделать все его функции общедоступными, чтобы их можно было вызвать в основном классе.